【问题标题】:Iterate object and list all found properties that match input迭代对象并列出所有找到的与输入匹配的属性
【发布时间】:2016-10-14 16:18:05
【问题描述】:

我正在尝试解决我遇到的 javascript 问题。我有一个有很多属性的对象。我想遍历属性以查找用户输入的所有条目。我写了一个 for..in-loop 但它没有给我任何信息。

有什么想法吗?

var numbers = {
    "Group1": "3300",
    "Group2": "1200",
    "Group3": "5000"
};

function test(){

        var input = document.getElementById("inputTxt").value;

        for(var group in numbers){

             if(numbers[group] == input){
                 console.log(numbers[group])
             }
        }           
}

此代码在我的控制台中没有记录任何内容。我究竟做错了什么?

谢谢!

【问题讨论】:

  • 可能你的输入既不是"3300" 也不是"1200" 也不是"5000" 或者你没有调用test
  • jsfiddle.net/L3droy1m 工作,检查输入值是你认为的。
  • 学习使用浏览器内置的 JavaScript 调试器。您可以单步执行代码并查看每一步的所有变量和其他值。这比只使用console.log() 要好得多。这是tutorial for the Chrome DevTools。其他浏览器也有类似的调试器。只需在 test() 函数的开头添加 debugger; 语句,如果您打开了 DevTools,它将在调试器中停止。另外:你曾经调用过test() 函数吗?

标签: javascript object if-statement for-loop for-in-loop


【解决方案1】:

我在这里创建了一个 plnkr,

https://plnkr.co/edit/cpdipV2qxAUa4pHtdKqA?p=preview

它似乎有效

for(var group in numbers){

             if(numbers[group] == input){
                 console.log(numbers[group])
             }
        } 

【讨论】:

    【解决方案2】:

    试试

    Object.keys(numbers).forEach((key) => {
        if (numbers[key] == input) {
            console.log(key + " " + numbers[key]);
        }
    });
    

    【讨论】:

    • Object.keys 是获取给定对象属性的一种更可靠的方法。当您不完全了解对象的工作原理时,for..in 循环有时会出现意外行为。这种方法也更明确,永远不会受到伤害。
    【解决方案3】:

    与 for in 循环一起使用

    var numbers = { "Group1": "3300", "Group2": "1200", "Group3": "5000" };
    var input = "3300";
    for(var group in numbers)
       if(numbers[group] == input)
          console.log(group + " " + numbers[group]); // Group1 3300
    

    【讨论】:

      猜你喜欢
      • 2021-12-31
      • 1970-01-01
      • 2012-11-09
      • 2015-12-22
      • 2020-06-09
      • 2019-07-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多