过滤器函数给我字符串Javascript错误

问题描述 投票:0回答:3

实现功能unique_in_order,该函数将一个序列作为参数,并返回不包含具有相同值的任何元素的项目列表,这些元素彼此相邻并保留元素的原始顺序。

例如:

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]

我尝试在给定参数上使用过滤器函数解决此问题。这是我的尝试:

var uniqueInOrder = function (iterable) { 
return iterable.filter(function(current, index, array){
    if (index === 0){
      return true;
    }
    else if (current[current.length - 1] === array[index]){
      return false;
    } 
    else {
      return true;
    }
  });
};

问题是我收到此错误,但我不明白为什么它没有将过滤器检测为功能。

这是我给它的参数:

uniqueInOrder(“ AAAABBBCCDAABBB”);

这里是错误:

const newArray = iterable.filter(function (current, index, array) {^

TypeError:iterable.filter不是函数在uniqueInOrder(c:\ Users \ Anthony \ source \ repos \ Web Dev \ Unique in Order \ script.js:2:29)在对象。 (c:\ Users \ Anthony \ source \ repos \ Web Dev \ Unique in Order \ script.js:15:1)在Module._compile(内部/模块/cjs/loader.js:1133:30)在Object.Module._extensions..js(内部/模块/cjs/loader.js:1153:10)在Module.load(内部/模块/cjs/loader.js:977:32)在Function.Module._load(内部/模块/cjs/loader.js:877:14)在Function.executeUserEntryPoint [作为runMain](内部/模块/run_main.js:74:12)在internal / main / run_main_module.js:18:47

javascript node.js
3个回答
0
投票

将参数作为字符串时使用String.prototype.split


0
投票

字符串没有filter-另外,制作Set然后转换为数组要容易得多:


0
投票

字符串不是数组(与某些其他语言相反),因此它们不提供filter方法:

© www.soinside.com 2019 - 2024. All rights reserved.