说我有以下2x2阵列:
var aTest = [
['test00','test01'],
['test10','test11']
]
我可以从第一个(零eth)父数组返回所有嵌套数组。即:aTest [0]返回
['test00', 'test01']
但是,对于没有循环的嵌套数组,我无法做同样的事情。即我想做的:aTest [] [0]:
[['test00'],['test10']]
我错了吗?没有循环就没有办法实现这个目标:
var aTemp = new Array();
for ( var i = 0; i < aTest.length; i++ ) {
aTemp[i] = new Array();
aTemp[i][0] = aTest[i][0];
};
答案 0 :(得分:2)
你是正确的,你必须遍历数组的每个元素才能实现这一目标。
您可以使用map()
function of Array prototype优化代码:
var aTest = [
['test00','test01'],
['test10','test11']
]
var firstItems = aTest.map(function(item){
return item[0];
});
&#13;
答案 1 :(得分:2)
为了扩展Bigood的答案(这是我的想法),你可以创建一个通用的“col”函数,它从多维数组中返回一个列(注意:JavaScript中没有多维数组)这个词的数学意义;它只是包含可以包含其他数组的数组。)
function col(a, n) { return a.map(function(x) { return x[n]; }); }
如果你想变得非常漂亮,你可以将其添加到Array.prototype
(注意:有些人非常强烈地认为你不应该修改内置类型。我不是其中之一。):
Object.defineProperty(Array.prototype, 'col', {
value: function(n) {
return this.map(function(x) { return x[n]; });
},
enumerable: false
});
然后你可以像这样使用它:
aTest.col(0) // ['test00', 'test10']
aTest.col(1) // ['test01', 'test11']