如何在javascript中读取每个多维数组

时间:2015-10-08 16:55:49

标签: javascript jquery arrays multidimensional-array

我需要这个神奇社区的帮助:)

也许我声明的方式,创建我的数组是错误的,但我正在向数组数组中添加内容,而我无法从中获取任何内容。

这是我的代码(使用我当前的代码编辑)

var arr_size = raw_data.length;

var label_ar = {};

$.each(raw_data, function() {
    var key = this.label;
  if (typeof label_ar[key] === 'undefined'){
            label_ar.key = {};
            label_ar.key.label = this.label;
            label_ar.key.Analyze = 0;
            label_ar.key.Verify = 0;
            label_ar.key.Closed = 0;
            label_ar.key.Build = 0;
            label_ar.key.Integrate = 0;
        //  console.dir(label_ar.key);
    }
    c_state = (this.state);
    label_ar.key[c_state] = (parseInt(this.value));
});

$.each(label_ar, function(i,v) {
    // console.dir(i, e);
    console.log("loop");
    $.each(label_ar[i], function(i,v) {
            console.log(i, v);
        });
    });

我注意到console.dir显示了内容,但最初它显示了[]

和length label_ar.length等于零(不确定如何)

这是我的控制台的快照 Console

我做错了什么?

看起来label_ar只包含最后一个循环的内容

这是raw_data raw_data

我的输出是许多数组,例如: 标签 - “CC" 分析 - 1 验证 - 2 关闭 - 4 建立 - 0 整合 - 2

2 个答案:

答案 0 :(得分:0)

所以,我要提出一些造型建议 - 希望你会发现这很有帮助。假设我不知道原始数据是什么,除了它是一个数组。当然,你不需要提前声明数组,你通常应该更喜欢javascript中的驼峰式

// the map function takes an array, and returns an array
// the first argument, d, is each element of raw data
var labelAr = rawData.map(function(d){

    // we can create a multidimensional array by returning an
    // Array literal, however you should really use an object
    // if you plan to have non numeric keys
    return {
       Integrate: 0,
       Analyze: 0,
       Closed: 0,
       Verify: 0,
       Build: 0,
       Label: d.label // this can come from d
       Value: d.value // this can come from d
    };
});

除此之外,如果没有看到raw_data中的内容,很难帮助你。

答案 1 :(得分:0)

管理“修复”它,感谢我看到的最后一个响应我需要使用对象而不是数组数组,而是使用数组的对象

如果有人有更好,更有效的解决方案,那就欢迎了。

var arr_size = raw_data.length;
var label_ar = {};

$.each(raw_data, function() {
  if (typeof label_ar[this.label] == 'undefined'){
            label_ar[this.label] = {};
            label_ar[this.label].label = this.label;
            label_ar[this.label].Analyze = 0;
            label_ar[this.label].Verify = 0;
            label_ar[this.label].Closed = 0;
            label_ar[this.label].Build = 0;
            label_ar[this.label].Integrate = 0;
    }
    label_ar[this.label][this.state] = (parseInt(this.value));
});

 console.dir(label_ar);

现在正在使用:)