如何返回此数组中不重复的唯一值? [英] How to return the only value that is not repeated in this Array?

查看:115
本文介绍了如何返回此数组中不重复的唯一值?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个关于Javascript的问题.

I have a question in Javascript.

这是以下数组:[1,0,0,0,0,0,0]

我想返回不重复的唯一值,即1.

I would like to return the only value that does not repeat, that is, 1.

有什么建议吗?

我有这个:

var result = arr.filter(x => arr.indexOf(x) !== 0);

推荐答案

使用indexOflastIndexOf

您可以比较indexOflastIndexOffilter()

Using indexOf and lastIndexOf

You can compare 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()

If you only want the first element you can use 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().

You can remove duplicates using Set() and then use 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)

let arr = [1,0,0,0,0,0,0];
let res = arr.filter(x => arr.filter(a => a === x).length === 1);
console.log(res)

关于时间复杂度,这是最好的.

This one is best regarding time complexity.

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)

这篇关于如何返回此数组中不重复的唯一值?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆