美文网首页
每天一道JavaScript算法题(1)

每天一道JavaScript算法题(1)

作者: Molly6943 | 来源:发表于2017-06-28 18:15 被阅读0次

    Implement the function unique_in_order which takes as argument a sequence and returns a list of items without any elements with the same value next to each other and preserving the original order of elements.

    翻译:实现一个unique_in_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实现吧。

    相关文章

      网友评论

          本文标题:每天一道JavaScript算法题(1)

          本文链接:https://www.haomeiwen.com/subject/uvgucxtx.html