【问题标题】:How to it manipulate JSON multi-dimensional arrays using jQuery如何使用 jQuery 操作 JSON 多维数组
【发布时间】:2013-04-25 12:07:19
【问题描述】:

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

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

【问题讨论】:

  • 首先你必须将它反序列化为一个数组,然后是array[i].Puff[j].Color
  • 感谢您的回答。我使用 parseJSON 对其进行反序列化,但热衷于使用某种迭代代码访问该属性。

标签: jquery json multidimensional-array


【解决方案1】:
yourObject[someIndex].Puff[someOtherIndex].Color

【讨论】:

    【解决方案2】:

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

    $.each(x, function(i) {
        console.log(i);
        $.each(this.Puff, function() {
           console.log(this.Color);
        });
    });
    
    0
    Gray
    Blue
    1
    DarkRed
    2
    DarkBlue
    Yellow
    

    【讨论】:

    • 很好的答案,但有更好的方法吗?
    • @JoseVega:你应该知道最好不要问,何塞。 ;)
    • 处理较大的输入时,我建议使用我的解决方案。 jsperf.com/object-iteration-speed
    【解决方案3】:

    我会选择非 jquery:http://jsfiddle.net/xguyj/

    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);
        }
    }
    

    【讨论】:

    • 如果你的项目中已经有 jQuery,OP 会这样做,为什么要使用冗长的 for(;;) 语法并且必须在你的时候做 x[i].Puff[t].length 疯狂可以只做 $.each() 并使用this 引用事物吗?我没有在所有事情上都使用 jQuery,但是没有理由为此而去老学校。 =P
    • 如果性能不是问题,我同意你的说法。就我而言,我希望我的应用程序尽可能精简和快速地运行。 jsperf.com/object-iteration-speed
    • "程序员浪费大量时间去思考或担心程序中非关键部分的速度,而在考虑调试和维护时,这些效率上的尝试实际上会产生强烈的负面影响。我们应该忘记小的效率,比如说大约 97% 的时间:过早的优化是万恶之源。但我们不应该放弃关键的 3% 的机会。如果您要遍历大量影响性能的元素,那么您可能做错了什么。
    • @PaoloBergantino 无法与 Donald Knuth 争论,但我对 OP 的责任是尽我所能给他最好的答案。我会让他决定是否像 Donald Knuth 所说的那样,循环遍历元素是“关键代码”
    • 如何快速响应?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-08
    • 1970-01-01
    • 2012-12-07
    • 2022-08-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多