在JSON中搜索值并返回控制台

时间:2018-12-09 21:46:27

标签: javascript arrays json string object

我正在尝试使用用户通过浏览器输入的字段在JSON文件中搜索值。

对象数组中的示例JSON对象如下所示:

enter image description here

我有一个事件监听器,等待用户点击。用户单击后,该函数将转到api json站点并检索所有数据。

下一步,我想在JSON数据中搜索用户键入的内容。

示例:

enter image description here

用户输入:“炮弹”

预期输出:196(buy_average)

但是我无法弄清楚如何搜索对象数组。

这是我得到的:

参数“数据”是从API检索的JSON对象。我知道它可以正常工作,因为我可以在控制台中显示它。

function renderHTML(data) {
  var searchVal = document.getElementById("search").value;
  console.log(searchVal);
  for (i=0; i<data.length; i++) {
    if (data["i"].name == searchVal) {
      console.log(data["i"].buy_average);
    }
  }
};

截至目前,我只是想弄清楚从网络上检索对象数组并将其显示在控制台后如何查看对象数组。

当我单击按钮时,除了用户的输入外,控制台中似乎什么也没有发生。我该如何解决?

2 个答案:

答案 0 :(得分:2)

使用i作为字符串尝试-而是将其用作整数:

if (data[i].name == searchVal) {
  console.log(data[i].buy_average);
}

答案 1 :(得分:1)

如果数据是对象,则length属性将为您提供undefined。您可以使用Object.values()获取值,然后遍历属性。

let data = {
    0:{        id:0,name:"aa"    },
    1:{        id:1,name:"Cannonball"},
    2:{        id:2,name:"xx"    },
};

let searchVal = "Cannonball";
Object.values(data).forEach(e=>{
   if(e.name === searchVal){
       console.log("This is the object: ");
       console.log(e);
   }
});