我有一个将唯一值推送到数组的简单情况。它看起来像这样:
contains()
看起来挺直截了当,对吧?不,看起来如此。它不会添加任何值。我确信这是我身上的某种愚蠢的错误,但我似乎无法找到它。
答案 0 :(得分:44)
是的小错误
if(this.items.indexOf(item) === -1) {
this.items.push(item);
console.log(this.items);
}
答案 1 :(得分:13)
您可以使用ES6中的Set结构来使代码更快,更易读:
// Create Set
this.items = new Set();
add(item) {
this.items.add(item);
// Set to array
console.log([...this.items]);
}
答案 2 :(得分:6)
我猜ES6已经设置了数据结构,您可以将其用于唯一条目
答案 3 :(得分:3)
你的逻辑是说,“如果这个项目已经存在,那就添加它。”它应该是相反的。
将其更改为...
if (this.items.indexOf(item) == -1) {
this.items.push(item);
}
答案 4 :(得分:2)
你必须使用== -1,如果等于-1,你的数组中不包含doest
this.items = [];
add(item) {
if(this.items.indexOf(item) == -1) {
this.items.push(item);
console.log(this.items);
}
}
答案 5 :(得分:2)
[1, 2, 3].includes(2); // true
[1, 2, 3].includes(4); // false
[1, 2, 3].includes(3, 3); // false
[1, 2, 3].includes(3, -1); // true
[1, 2, NaN].includes(NaN); // true
类似
const array = [1, 3];
if (!array.includes(2))
array.push(2);
但是,请注意页面底部的浏览器兼容性。
答案 6 :(得分:2)
在数组中始终推送唯一值
ab = [
{"id":"1","val":"value1"},
{"id":"2","val":"value2"},
{"id":"3","val":"value3"}
];
var clickId = [];
var list = JSON.parse(ab);
$.each(list, function(index, value){
if(clickId.indexOf(value.id) < 0){
clickId.push(value.id);
}
});
答案 7 :(得分:1)
使用Set
Counter
答案 8 :(得分:1)
如果您要寻找一支班轮
对于图元
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
对于对象
this.items.indexOf(item) === -1) && this.items.push(item);
答案 9 :(得分:0)
因此不确定这是否能回答您的问题,但索引如果您要添加的项目仍然返回-1。不熟悉js但看起来这些项目是因为它们还没有在数组中。我为你做了一个小修改代码的jsfiddle。
this.items = [];
add(1);
add(2);
add(3);
document.write("added items to array");
document.write("<br>");
function add(item) {
//document.write(this.items.indexOf(item));
if(this.items.indexOf(item) <= -1) {
this.items.push(item);
//document.write("Hello World!");
}
}
document.write("array is : " + this.items);
答案 10 :(得分:0)
如果使用 Lodash ,请查看_.union
函数:
let items = [];
items = _.union([item], items)
答案 11 :(得分:0)
var helper = {};
for(var i = 0; i < data.length; i++){
helper[data[i]] = 1; // Fill object
}
var result = Object.keys(helper); // Unique items