在添加对象之前,如何检查对象的数组?

时间:2018-02-23 14:00:49

标签: javascript arrays loops object

问题是,我创建一个空数组并保持空白,直到用户在我的页面上并输入他们的“用户名”和他们的“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});           
        }
    }  
}

然而,这不起作用。有什么想法吗?

4 个答案:

答案 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==inputNameid==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