我发现了很多相关的问题和答案,谈论for...in循环和使用hasOwnProperty,但我所做的一切都不能正常工作。我所要做的就是检查一个数组中是否存在一个键,如果不存在,则添加它。
我从一个空数组开始,然后在使用jQuery清理页面时添加键。
最初,我希望下面这样简单的东西能起作用:(使用通用名称)
if (!array[key])
array[key] = value;
不行。紧接着是:
for (var in array) {
if (!array.hasOwnProperty(var))
array[key] = value;
}
还尝试了:
if (array.hasOwnProperty(key) == false)
array[key] = value;
所有这些都没有奏效。要么没有任何东西被推入数组,要么我尝试的方法并不比简单地声明array[key] = value
好。为什么这么简单的事情这么难做。有什么想法可以让它工作吗?
发布于 2019-03-05 17:36:51
在ES6中使用Sets提供了一个更好的替代方案。因此,如果您需要一个不应添加重复项的数组,则建议使用集合,而不是声明数组。
var array = new Set();
array.add(1);
array.add(2);
array.add(3);
console.log(array);
// Prints: Set(3) {1, 2, 3}
array.add(2); // does not add any new element
console.log(array);
// Still Prints: Set(3) {1, 2, 3}
发布于 2017-01-11 20:57:47
您可以尝试这样做:
var names = ["Mike","Matt","Nancy","Adam","Jenny","Nancy","Carl"];
var uniqueNames = [];
$.each(names, function(i, el){
if($.inArray(el, uniqueNames) === -1) uniqueNames.push(el);
});
发布于 2016-01-05 01:11:27
function check (list){
var foundRepeatingValue = false;
var newList = [];
for(i=0;i<list.length;i++){
var thisValue = list[i];
if(i>0){
if(newList.indexOf(thisValue)>-1){
foundRepeatingValue = true;
console.log("getting repeated");
return true;
}
} newList.push(thisValue);
} return false;
}
var list1 = ["dse","dfg","dse"];
check(list1);
输出:
getting repeated
true
https://stackoverflow.com/questions/10757516
复制相似问题