我试图返回一个只有唯一元素的数组,这些元素在数组中没有重复,没有特定的顺序.
[1,2,3,3,3,4,4,2] 会回来的 1
["hello", "truck", 2, "truck", 2, "truck"] 会回来的 "hello"
到目前为止,我只能使用filter()函数返回唯一元素,但我不知道该去哪里.
基本上如果有重复项,我希望从数组中删除这两个值.
这听起来很简单,但我有一个严重的心理打嗝.
以下是我的代码:
function diff(arr1, arr2) {
var newArr = [];
newArr = arr1.concat(arr2);
newArr = newArr.filter(function(elem, index, self) {
return index == self.indexOf(elem);
});
console.log(newArr);
return newArr;
}
diff([1, 2, 3, 5], [1, 2, 3, 4, 5]);
//should return 4
Run Code Online (Sandbox Code Playgroud)
比较indexOf和lastIndexOf,如果它们相等则元素没有重复.使用.filter此逻辑.
function diff(arr1, arr2) {
return arr1.concat(arr2).filter(function(elem, index, self) {
return self.indexOf(elem)==self.lastIndexOf(elem);
});
}
alert(diff([1, 2, 3, 5], [1, 2, 3, 4, 5]));Run Code Online (Sandbox Code Playgroud)