【问题标题】:Javascript array keys loop through checkingJavascript数组键循环检查
【发布时间】:2018-03-31 19:44:57
【问题描述】:

有一个包含键值对的数组,其中的键将包含一个可操作的 id。问题是我打算实现一个检查键值的概念,即如果键存在于数组中,则检查值;否则它将为新的唯一 ID 创建一个新的键值对。我寻找了 Object.keys() 函数,我发现它只会返回键数组。我倾向于在 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
    }   

}
}

【问题讨论】:

  • 你的代码有什么问题? (输入、当前输出、预期输出)
  • 介意多解释一下预期结果是什么以及问题出在哪里?我很难弄清楚你的解释:P
  • 你对函数的输入是什么?
  • 你知道for ... in吗?
  • @BenWest 其实我不知道,但谢谢!

标签: javascript arrays object key-value


【解决方案1】:

如果我正确理解了您的问题,您想添加一个新的键/值对(如果它不存在)。

在这种情况下,最好使用对象或 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);

【讨论】:

  • 我很高兴这段代码有效,但我发现了一个问题,当我使用警报时,我无法查看数组中的键,而不是像在 console.log 中一样
  • 警报需要一个字符串。使用JSON.stringify(marks)将对象转换为字符串。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-24
  • 2017-04-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多