Javascript 数组键循环检查

Javascript array keys loop through checking

有一个包含键值对的数组,其中的键将包含一个可操作的 id。问题是我打算实现检查键值的概念,即如果数组中存在键,则检查值;否则它将为新的唯一 ID 创建一个新的键值对。我寻找 Object.keys() 函数,我发现它只会 return 键数组。我倾向于在 for 循环中一个一个地检查键。

对不起,如果我没有很好地解释我的问题

代码:

var marks = new Array();
function totalScore(critId,score){
var compare = Object.keys(marks);
var result = 0;
for(var i = 0; i < marks.length; i++){ //Looping in marks array
    for(var j = 0; j < compare.length; j++){ //Looping in compare array
        if(compare[j] == marks[i]){ //Comparing the key of the arrays
            marks[i] = score; //If matched update the value of the current key
            result ++;
        }
    }
    if(result == 0){ //If there are no result of the comparison
        marks.critId = score; //Add new key value pair to the array
    }   

}
}

如果我对你的问题的理解正确,你想添加一个新的 key/value 对(如果它不存在)。

这种情况最好使用对象或 ES6 Map。

var marks = {};
function totalScore(critId, score) {
  if(!(critId in marks)) marks[critId] = score;
}

totalScore(1, 5);
totalScore(2, 8);
totalScore(1, 4);

console.log('marks', marks);