在javascript中从multidimentional数组中获取每个数据

时间:2016-06-03 07:43:11

标签: javascript arrays multidimensional-array

我有这样的数据

var data = [[1, 2, 3, 4], [5, 6, 7, 8]];

我希望使用1, 2, 3, 4, 5, 6 ,7 ,8循环来获取该数组中的每个数据,例如for,但我无法获取每个数据。

这是我使用循环获取每个数据的代码

var each = [];
for (var i = 0; i < data.length; i++) {
            each.push(data[i]);
            for (var i = 0; i < each.length; i++) {
                console.log(each[i]);
            };
        };

在我的想法中,我可以获得每个数组数据,如1,2,3 etc

但循环结果为[1,2,3,4]。这是我的数组中的第一个数据

请有人告诉我从该阵列获取每个数据的最佳方法

5 个答案:

答案 0 :(得分:1)

您可以使用Array#reduceArray#concat来获得平面阵列。

var data = [[1, 2, 3, 4], [5, 6, 7, 8]],
    each = data.reduce(function (r, a) { return r.concat(a); }, []);

console.log(each);

答案 1 :(得分:0)

这样做:

&#13;
&#13;
data = [[1, 2, 3, 4], [5, 6, 7, 8]];
var joined = [].concat.apply([], data).join(",");
   console.log(joined);
&#13;
&#13;
&#13;

答案 2 :(得分:0)

另一种选择是使用带有apply

的concat
var data = [[1, 2, 3, 4], [5, 6, 7, 8]];   
var flat = [].concat.apply([],data);
console.log(flat);

答案 3 :(得分:0)

更合适的方法是使用Array#reduce,但您也可以使用以下更改来使用代码:

var each = [];
 for (var i = 0; i < data.length; i++) { 
        each = each.concat(data[i]);           
        for (var j = 0; j < each.length; j++) {
            console.log(each[j]);
        }
 }

答案 4 :(得分:0)

我想最简单的方法是

var data = [[1, 2, 3, 4], [5, 6, 7, 8]],
       z = [].concat(...data); // [1,2,3,4,5,6,7,8];