毎日JavaScriptアルゴリズムの問題(1)

1505 ワード

Implement the function unique_同前order which tars as argment a sequence and returns a list of items without any element with the same value next to each other and preserving the original order of elements.
一つのunique_を実現します.同前order関数は、パラメータとしてシーケンスを受け入れ、リストに戻ります.リストの各項目は他の項目とは異なる値で、元の順序はそのままです.
For example:
uniqueInOrder('AAAABBBCCDAABBB') == ['A', 'B', 'C', 'D', 'A', 'B']
uniqueInOrder('ABBCcAD')         == ['A', 'B', 'C', 'c', 'A', 'D']
uniqueInOrder([1,2,2,3,3])       == [1,2,3]
Solution:
var uniqueInOrder=function(iterable){
  //your code here - remember iterable can be a string or an array
  let result = [];
  let last;
  for (let i = 0; i < iterable.length; i++) {
    if (iterable[i] !== last){
      result.push(last = iterable[i]);
    }
  }
  return result;
}
まずforサイクル
  var a = [1,2,3,4,5];
  for(let i = 0; i < a.length; i++) {
    console.log(a[i]);
  } // 1 2 3 4 5
  var b = '12345';
  for(let i = 0; i < b.length; i++) {
    console.log(b[i]);
  } // 1 2 3 4 5
配列方法push push()は、例えば、Arrayの末尾にいくつかの要素を追加する.
  var a = [1,2,3,4,5];
  var c;
  a.push(c = 1);
  console.log(a); // [1, 2, 3, 4, 5, 1]
この二つの方法が分かりました.この問題もすらすらと解決できます.この値は存在しないと判断し、存在しないとpushは配列中に存在する.他に解決方法がありますか?自分で考えてみましょう.tips:jsの高次関数filterで実現してみましょう.