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实现吧。