javascript – 过滤掉数组只有唯一值
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了javascript – 过滤掉数组只有唯一值,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1960字,纯文字阅读大概需要3分钟。
内容图文
参见英文答案 > Get all unique values in a JavaScript array (remove duplicates) 73个
我需要过滤掉我的数组以仅包含唯一值.
这是我的数组数据
["X_row7", "X_row4", "X_row6", "X_row10", "X_row8", "X_row9", "X_row11", "X_row7", "X_row4", "X_row6", "X_row10", "X_row8", "X_row9", "X_row11", "X_row7", "X_row4", "X_row6", "X_row10", "X_row8", "X_row9", "X_row11", "X_row7", "X_row4", "X_row6", "X_row10", "X_row8", "X_row9", "X_row11", "X_row7", "X_row4", "X_row6", "X_row10", "X_row8", "X_row9", "X_row11", "X_row7", "X_row4", "X_row6", "X_row10", "X_row8", "X_row9", "X_row11"]
预期的结果应该是
["X_row7", "X_row4", "X_row6", "X_row10", "X_row11", "X_row8", "X_row9"]
我应该如何继续我的代码才能获得正确的结果.
newArray = [];
for(n in data){
if(!newArray.indexOf(n)){
newArray.push(n);
}
}
console.log(newArray);
如果您需要任何其他信息,请告诉我,我会提供.谢谢
解决方法:
您可以使用Array.filter函数根据回调函数的返回值过滤掉数组的元素.回调函数针对原始数组的每个元素运行.
这里回调函数的逻辑是,如果当前项的indexOf值与索引相同,则表示首次遇到该元素,因此可以将其视为唯一.如果不是,则表示已经遇到该元素,因此现在应该将其丢弃.
var arr = ["X_row7", "X_row4", "X_row6", "X_row10", "X_row8", "X_row9", "X_row11", "X_row7", "X_row4", "X_row6", "X_row10", "X_row8", "X_row9", "X_row11", "X_row7", "X_row4", "X_row6", "X_row10", "X_row8", "X_row9", "X_row11", "X_row7", "X_row4", "X_row6", "X_row10", "X_row8", "X_row9", "X_row11", "X_row7", "X_row4", "X_row6", "X_row10", "X_row8", "X_row9", "X_row11", "X_row7", "X_row4", "X_row6", "X_row10", "X_row8", "X_row9", "X_row11"];
var filteredArray = arr.filter(function(item, pos){
return arr.indexOf(item)== pos;
});
console.log( filteredArray );
警告:正如rob在评论中指出的那样,这个方法应该避免使用非常大的数组,因为它在O(N ^ 2)中运行.
更新(2017年11月16日)
如果您可以依赖ES6 features,则可以使用Set object和Spread operator从给定数组创建一个唯一数组,如下面@Travis Heeter的答案中所述:
var uniqueArray = [...new Set(array)]
内容总结
以上是互联网集市为您收集整理的javascript – 过滤掉数组只有唯一值全部内容,希望文章能够帮你解决javascript – 过滤掉数组只有唯一值所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。