如何从数组数组中创建一个新数组,只选择具有所需索引的元素

时间:2018-04-24 14:14:50

标签: javascript arrays

在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]

这样做有什么好/聪明的方法?

4 个答案:

答案 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]

该功能如下所示:

&#13;
&#13;
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;
&#13;
&#13;

更短的变体:

&#13;
&#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;
&#13;
&#13;