我有一个关于 Javascript 的问题。
这是以下数组:[1,0,0,0,0,0,0]
我想返回唯一不重复的值,即1。
有什么建议么?
我有这个:
var result = arr.filter(x => arr.indexOf(x) !== 0);
Using indexOf
and lastIndexOf
你可以比较一下indexOf
and lastIndexOf
and filter()
let arr = [1,0,0,0,0,0,0];
let res = arr.filter(x => arr.indexOf(x) === arr.lastIndexOf(x));
console.log(res)
如果你只想要第一个元素,你可以使用find()
let arr = [1,0,0,0,0,0,0];
let res = arr.find(x => arr.indexOf(x) === arr.lastIndexOf(x));
console.log(res)
您可以使用删除重复项Set()
然后使用filter()
on it.
let arr = [1,0,0,0,0,0,0];
let res = [...new Set(arr)].filter(x => arr.indexOf(x) === arr.lastIndexOf(x));
console.log(res)
使用嵌套filter()
let arr = [1,0,0,0,0,0,0];
let res = arr.filter(x => arr.filter(a => a === x).length === 1);
console.log(res)
使用对象和reduce()
就时间复杂度而言,这是最好的。
let arr = [1,0,0,0,0,0,0];
let obj = arr.reduce((ac,a) => (ac[a] = ac[a] + 1 || 1,ac),{});
let res = Object.keys(obj).filter(x => obj[x] === 1).map(x => +x || x);
console.log(res)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)