Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用jQuery操作JSON多维数组_Jquery_Json_Multidimensional Array - Fatal编程技术网

如何使用jQuery操作JSON多维数组

如何使用jQuery操作JSON多维数组,jquery,json,multidimensional-array,Jquery,Json,Multidimensional Array,在使用jQuery访问Color属性将JSON字符串转换为对象后,您将如何迭代该JSON字符串 [{"Puff":[{"Color":"Gray"},{"Color":"Blue"}]},{"Puff":[{"Color":"DarkRed"}]},{"Puff":[{"Color":"DarkBlue"},{"Color":"Yellow"}]}] 您有一个对象数组,所有对象都有一个名为“Puff”的键,其中包含另一个对象数组 $.each(x, function(i) { cons

在使用jQuery访问Color属性将JSON字符串转换为对象后,您将如何迭代该JSON字符串

[{"Puff":[{"Color":"Gray"},{"Color":"Blue"}]},{"Puff":[{"Color":"DarkRed"}]},{"Puff":[{"Color":"DarkBlue"},{"Color":"Yellow"}]}]

您有一个对象数组,所有对象都有一个名为“Puff”的键,其中包含另一个对象数组

$.each(x, function(i) {
    console.log(i);
    $.each(this.Puff, function() {
       console.log(this.Color);
    });
});

0
Gray
Blue
1
DarkRed
2
DarkBlue
Yellow

您有一个对象数组,所有对象都有一个名为“Puff”的键,其中包含另一个对象数组

$.each(x, function(i) {
    console.log(i);
    $.each(this.Puff, function() {
       console.log(this.Color);
    });
});

0
Gray
Blue
1
DarkRed
2
DarkBlue
Yellow

我会选择非jquery:

var x=[{“Puff”:[{“Color”:“Gray”},{“Color”:“Blue”},{“Puff”:[{“Color”:“DarkRed”}]},{“Puff”:[{“Color”:“DarkBlue”},{“Color”:“Yellow”}];
对于(变量i=0;i
我会选择非jquery:

var x=[{“Puff”:[{“Color”:“Gray”},{“Color”:“Blue”},{“Puff”:[{“Color”:“DarkRed”}]},{“Puff”:[{“Color”:“DarkBlue”},{“Color”:“Yellow”}];
对于(变量i=0;i
首先,您必须将其反序列化为数组,然后是数组[i].Puff[j].color谢谢您的回答。我曾使用parseJSON对其进行反序列化,但我热衷于使用某种迭代代码访问该属性。首先,您必须将其反序列化为数组,然后是数组[I]。Puff[j]。Color谢谢您的回答。我曾使用parseJSON对其进行反序列化,但热衷于使用某种迭代代码访问该属性。回答很好,但有更好的方法吗?@Joseevega:你应该知道,不要问,Jose.)当处理较大的输入时,我建议使用我的解决方案。回答得很好,但是有更好的方法吗?@JoseVega:你应该知道不该问,Jose.)当处理较大的输入时,我建议使用我的解决方案。如果您的项目中已经有了jQuery(OP就是这么做的),那么为什么要使用verbose for(;;)语法并且必须执行x[i].Puff[t].length疯狂,而您只需执行$.each()并引用
this
?我并不是什么都使用jQuery,但没有理由对此老生常谈=PIf性能不是问题,我同意你的说法。在我的情况下,我希望我的应用程序尽可能地精简和快速运行。“程序员浪费大量时间考虑或担心其程序中非关键部分的速度,而在考虑调试和维护时,这些提高效率的尝试实际上会产生强烈的负面影响。我们应该忘记效率低的问题,比如说97%的时间:过早优化是错误的万恶之源。然而,我们不应该在这关键的3%中放弃我们的机会。“如果你通过大量的元素循环,使性能变得重要,那么无论如何,你可能做错了什么。”保罗贝加蒂诺不能与唐纳德·克努特争辩,但我对OP的责任是尽我所能给他最好的答案。我将让他决定是否像Donald Knuth所说的那样,在元素上循环是“关键代码”,这对于快速响应时间来说是什么?如果您的项目中已经有了jQuery,OP就是这样做的,那么为什么要使用verbose for(;;;)语法,并且必须执行x[I].Puff[t].长度疯狂,而您只能执行$.each()并引用带有此的内容?我并不是什么都使用jQuery,但没有理由对此老生常谈=PIf性能不是问题,我同意你的说法。在我的情况下,我希望我的应用程序尽可能地精简和快速运行。“程序员浪费大量时间考虑或担心其程序中非关键部分的速度,而在考虑调试和维护时,这些提高效率的尝试实际上会产生强烈的负面影响。我们应该忘记效率低的问题,比如说97%的时间:过早优化是错误的万恶之源。然而,我们不应该在这关键的3%中放弃我们的机会。“如果你通过大量的元素循环,使性能变得重要,那么无论如何,你可能做错了什么。”保罗贝加蒂诺不能与唐纳德·克努特争辩,但我对OP的责任是尽我所能给他最好的答案。我将让他决定是否像Donald Knuth所说的那样,在元素上循环是“关键代码”,这对于快速响应时间来说是什么?
var x = [{"Puff":[{"Color":"Gray"},{"Color":"Blue"}]},{"Puff":[{"Color":"DarkRed"}]},{"Puff":[{"Color":"DarkBlue"},{"Color":"Yellow"}]}];

for(var i = 0; i < x.length; i++){
    for(var t = 0; t < x[i].Puff.length; t++) {
         console.log(x[i].Puff[t].Color);
    }
}