如何循环json并获取特定值?

时间:2016-04-18 19:27:34

标签: javascript json

我可能将json作为单个或多个数据源获取,我需要解析它以获取特定值。

如何获取特定值然后将其放入字符串并比较值以获得下面所示的单个字符串。

var info;

info= {
 "rows": [
 {
  "id": 1,
  "data": [ "", "1", "s", "Al", "A" ]
 }
 ]
};

info= {
 "rows": [
 {
  "id": 1,
  "data": [ "", "1", "s", "Al", "A" ]
 },
 {
  "id": 2,
  "data": [ "", "1", "s", "Az", "A" ]
 },
 {
  "id": 3,
  "data": [ "", "2", "s", "Co", "A" ]
 }
]
};


var jsonData;

我不确定如何遍历json并提取数据[1]然后将每个值放入字符串中,例如:1,1,2。

var jstring = jsonData 

这是我想要放入字符串中的每个项目。

$.each([ jstring ], function( index, value ) {
 if(g.includes(string)) {
  console.log(value + " exists");
 }
  else
 {
  g = g + value;
 }
});

我希望看到的是:1,2

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

这样的事情怎么样:

var outputString = info.rows.reduce(function(arr, row){
    return arr.concat(row.data[1]); 
}, []).join(","); 

以下是有关如何减少工作的一些文档的链接:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce

基本上,您的是一个数组,因此reduce会将一个函数应用于该数组中的每个项目,并且排序"保持跟踪"输出与所谓的累加器。在这种情况下,我们的累加器是 arr 变量。对于rows数组中的每个项目,我们将该值连接到我们的累积数组,然后将该值传递给下一次迭代。我们将空括号作为第二个参数传递给reduce作为初始值,这意味着我们想要从一个空数组开始。一旦reduce完成运行,我们就会得到一个数组,在这种情况下看起来像[1,1,2]。此时,我们可以使用.join(",")将新数组中的每个项目连接成一个字符串,用逗号分隔。