问题是,我创建一个空数组并保持空白,直到用户在我的页面上并输入他们的“用户名”和他们的“ID”并单击一个按钮。
我必须检查数组是否有重复项,所以我希望我的代码检查数组,如果没有相同名称,则将其添加到数组中。这是我的代码不起作用
var myArray = [];
function arrayChecker(inputName, inputID) {
for (var key in myArray) {
if (myArray.hasOwnProperty(key)) {
console.log(key, myArray[key]);
} else {
myArray.push({"name": inputName, "id": inputID});
}
}
}
然而,这不起作用。有什么想法吗?
答案 0 :(得分:0)
更好的实施:
function arrayChecker(inputName, inputID) {
if (!myArray.some(x => x.name === inputName && x.id == inputID)) {
myArray.push({"name": inputName, "id": inputID});
}
}
答案 1 :(得分:0)
您不检查重复项。 myArray.hasOwnProperty(key)
部分仅检查索引(键)是否在数组中。但是,您通常要检查index = key上的对象是否具有name==inputName
和id==inputID
。所以你的代码需要看起来像这样:
var myArray = [];
function arrayChecker(inputName, inputID) {
var check=false;
for (var key in myArray) {
if (myArray.hasOwnProperty(key)) {
if (myArray[key].name == inputName && myArray[key].id == inputID)
check=true;
}
}
if (!check)
myArray.push({"name": inputName, "id": inputID});
}
答案 2 :(得分:0)
var myArray = [];
function arrayChecker(inputName, inputID) {
if (!myArray.find(user=>user.name===inputName)){ // you can also check the id if necessarr
myArray.push({"name": inputName, "id": inputID});
} else {
console.log('user already exists')
}
}
答案 3 :(得分:0)
您需要使用的是for-of-loop
并检查具体值:
旧时尚方式:
function arrayChecker(inputName, inputID) {
for (var obj of myArray) {
if (obj.name === inputName && obj.id === inputID) {
return false;
}
}
myArray.push({"name": inputName, "id": inputID});
return true;
}
使用功能some
:
function arrayChecker(inputName, inputID) {
var found = myArray.some(function (obj) {
return obj.name === inputName && obj.id === inputID
});
if (found) return false;
myArray.push({"name": inputName, "id": inputID});
return true;
}
重要事项:函数arrayChecker
返回结果以进行检查,即:如果添加了对象。已添加true
,但未添加false
。