gpt4 book ai didi

javascript - 从数组返回唯一值

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:34:42 25 4
gpt4 key购买 nike

如果我有一个像下面这样的数组作为例子:

myArray = [1,4,5,1,5];

我如何删除所有重复值(本例中的所有 1 和 5)并仅返回唯一元素(本例中的 4)。

如有任何帮助,我们将不胜感激。

最佳答案

我觉得

[1,4,5,1,5].filter(function(x, n, self) { 
return self.indexOf(x) == self.lastIndexOf(x)
})

使用下划线的可能更有效的基于散列的版本:

a =[1, 2, 3, 3, 4, 2, 1, 5]
uniqs = _.chain(a).countBy().pairs().filter(function(x) {
return x[1] == 1
}).pluck(0).value()

或纯 javascript:

a = [1, 2, 3, 3, 4, 2, 1, 5]
hash = {}

a.forEach(function(x) {
hash[x] = (Number(hash[x]) || 0) + 1
});

uniq = Object.keys(hash).filter(function(n) {
return hash[n] == 1
});

但是请注意,这会将数组值转换为字符串(结果将是 ["4","5"])。

如果你对排序的数组感到满意,你也可以这样做:

a = [1, 2, 3, 3, 4, 2, 1, 5]

uniq = a.sort().filter(function(x, n, self) {
return x != self[n - 1] && x != self[n + 1];
});

//[4, 5]

第二种和第三种方法有一个严重的限制,即它们只适用于原始值——你不能“唯一化”一个对象数组。第一个函数工作正常:

x = {x:1}; y = {y:1}; a = [x, y, x, x];
uniq = a.filter(function(x, n, self) {
return self.indexOf(x) == self.lastIndexOf(x)
})
// {"y":1}

对于那些好奇的性能测试(在不同的浏览器中相当不一致):http://jsperf.com/efficient-unique/2

关于javascript - 从数组返回唯一值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18367426/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com