如何从嵌套在JSON中的数组中检索值

时间:2016-01-29 23:31:13

标签: javascript jquery json multidimensional-array nested

我想知道如何访问"结果2"使用jQuery或纯JavaScript从我的JSON对象。

var jsonarray = [{

title: "Kategori1",

  items: [{

    result: "Item1",
    //Nested array
    items2: [{
      //How to get the value of result2
      result2: "item1 item1"
    }],
  }, {

    result: "Item2"
  }, {

    result: "Item3"
  }]
}];

如果我运行console.log(this.data.items[i].items2); 我明白了:

[Object { result2="item1 item1"}]
[Object { result2="item4 item4"}]

...在控制台中,但之后我就陷入了困境。

我尝试过:

this.data.items[i].items2.result2; // Not working

还有另一个循环:

for (var i = 0; i < this.data.items.length; ++i) {
    this.data.items[i].result, // Gives me the result from the items array, working
        for (var items2 in this.data.items[i]) {

            var result = this.data.items[i]['items2'];
            console.log(result.result2); //Not working            
        };
}

4 个答案:

答案 0 :(得分:1)

正如我已经评论过的那样,在方括号结束之前有逗号。请删除以使JSON有效。

尝试如下。

解决方案1:无需迭代即可直接访问。

document.write(jsonarray[0].items[0].items2[0].result2);

解决方案2:迭代解决方案

&#13;
&#13;
var jsonarray = [{
  title: "Kategori1",
  items: [{
    result: "Item1",
    //Nested array
    items2: [{
      //How to get the value of result2
      result2: "item1 item1"
    }],
  }, {
    result: "Item2"
  }, {
    result: "Item3"
  }]
}];

// Iterate jsonarray Array.
for(var i = 0; i < jsonarray.length; i++) {

	// Iterating Array Element: Items.
	var items = jsonarray[i].items;
	for(var j = 0; j < items.length; j++) {
		var itemsItem2 = items[j].items2;

		// Checking whether Item2 is exist and variable type is Array.
		if(itemsItem2 && itemsItem2.constructor == Array) {

			// Iterating Items items2.
			for(var k = 0; k < itemsItem2.length; k++) {
				document.write(itemsItem2[k].result2);
			}

		}
	}

}
&#13;
&#13;
&#13;

答案 1 :(得分:0)

试试这个:

std::shared_ptr

答案 2 :(得分:0)

items2是一个数组,必须由索引

访问
this.data.items[0].items2[0].result2

此外,您的JSON格式不正确。你有逗号逗号。

var data = JSON.stringify({
    title: "Kategori1",
    items: 
    [
        {
            result: "Item1",
            items2: [
            {
                result2: "item1 item1"
            }]
        },
        {
            result: "Item2"
        },
        {
            result: "Item3"
        }
    ]
});
var json = JSON.parse(data);

alert(json.items[0].items2[0].result2);

答案 3 :(得分:0)

我之前的答案是在你有实际的JSON时编写的,但我正在编辑它以符合你的标准。

你有一个JavaScript数组,而不是JSON。要访问项目result2,您可以执行以下代码行:

console.log(jsonarray[0].items[0].items2[0].result2);

由于这不是JSON,因此您无需引用data对象。