我正在尝试在数组中找到单个出现的元素。但它只显示 1 个元素。逻辑错在哪里?
function findSingle(array){
var arrayCopy = array.slice(0);
var x;
var y = [];
for (var i = 0; i < array.length; i++) {
x = arrayCopy.splice(i, 1)
if(arrayCopy.includes(array[i]) === false){
console.log(array[i] + " is single")
}
arrayCopy = arrayCopy.concat(x)
}
}
findSingle([1, 3, 3, 6])
Run Code Online (Sandbox Code Playgroud)
您可以使用双Array.filter()删除出现多次的数字:
function findSingle(arr) {
return arr.filter(i => arr.filter(j => i === j).length === 1)
}
const result = findSingle([1, 3, 3, 6, 8, 4, 6])
console.log(result) // [1, 8, 4]Run Code Online (Sandbox Code Playgroud)
请记住,由于Javascript 评估相等性和相同性的方式,这仅适用于 Numbers 和其他原语。