在javascript中,我有一个变量:
foo = [[5,3,2],[2,7,4],[4,6,3],[2,6,4]]
我想创建一个我可以提供的数组和索引的函数,它将返回一个数组,其中只包含原始数组的每个元素中该索引的值。
示例:
bar = funtion (foo, 1);
//expected output: bar = [3,7,6,6]
这样做有什么好/聪明的方法?
答案 0 :(得分:3)
试试这个:
function filterIndexes(2dArr, index) {
return 2dArr.map(function(subArr) {
return subArr[index];
});
}
答案 1 :(得分:2)
const foo = [
[5, 3, 2],
[2, 7, 4],
[4, 6, 3],
[2, 6, 4]
]
const bar = function(arr, ndx) {
return arr.map(e => e[ndx]);
}
const result = bar(foo, 2)
console.log(result)
答案 2 :(得分:1)
我想方法是迭代数组并创建一个新数组:
foo = [[5,3,2],[2,7,4],[4,6,3],[2,6,4]]
function bar(arr, idx) {
var selectedArr = [];
arr.forEach(function(subArr) {
selectedArr.push(subArr[idx]);
});
return selectedArr;
}
document.getElementById("result").innerText = bar(foo,2);
<span id="result"></span>
答案 3 :(得分:1)
嗯,在你的例子中,你忘了数组是从零开始的。因此,对于索引2
,答案应为[2, 4, 3, 4]
该功能如下所示:
const foo = [[5,3,2],[2,7,4],[4,6,3],[2,6,4]];
function bar(arr, index) {
return arr.map( subarray => subarray[index] );
}
console.log( bar( foo, 2 ) );
&#13;
更短的变体:
const foo = [[5,3,2],[2,7,4],[4,6,3],[2,6,4]];
const bar = (arr, index) => arr.map( subarray => subarray[index] );
console.log( bar ( foo, 2 ) );
&#13;