实现功能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
将参数作为字符串时使用String.prototype.split
。
字符串没有filter
-另外,制作Set
然后转换为数组要容易得多:
字符串不是数组(与某些其他语言相反),因此它们不提供filter
方法: