获取数组的每个子数组的最后一个元素

时间:2018-03-09 09:28:00

标签: javascript arrays underscore.js

我知道对于一个数组,它可以使用下划线的last函数,所以在这个数组的情况下它将是:

myArray = [32, 1, 8, 31]; 
lastElement = _.last(myArray);

问题在于存在这样的矩阵:

myArray = [[1, 3, 5], [55, 66, 77], [0, 1, 2]]; 

,想要的结果是

lastElement = [5, 77, 2];

有什么建议吗?

9 个答案:

答案 0 :(得分:2)

使用mapslice(赢得原始数组的变异)

[[1, 3, 5], [55, 66, 77], [0, 1, 2]].map( s => s.slice(-1)[0] );

答案 1 :(得分:2)

你可以做到

var lastElement = myArray.map(_.last);

答案 2 :(得分:1)

var lastElement = myArray.map((x) => {
   return _.last(x);
});

答案 3 :(得分:1)

或者您也可以使用ES6 map



let myArray = [[1, 3, 5], [55, 66, 77], [0, 1, 2]]; 
let result = myArray.map(v => v[ v.length - 1] );

console.log(result );




答案 4 :(得分:1)

检查一下。使用map迭代数组并提取最后一个元素。

不需要任何图书馆。

let myArray = [[1, 3, 5], [55, 66, 77], [0, 1, 2]]; 
let output = [];

output = myArray.map(m => m[m.length - 1] )

console.log(output)

答案 5 :(得分:1)

您只需使用Array.from



var myArray = [[1, 3, 5], [55, 66, 77], [0, 1, 2]]; 

var res = Array.from(myArray, x => x[x.length - 1]);

console.log(res);




此处尚未回答的另一种可能性是Array#reduce



var myArray = [[1, 3, 5], [55, 66, 77], [0, 1, 2]]; 

var res = myArray.reduce((acc, curr) => acc.concat(curr[curr.length - 1]),[]);

console.log(res);




答案 6 :(得分:0)

您可以使用array.prototype.map将每个子数组转换为其中的最后一个元素。如果您不想改变array.prototype.pop,则可以使用arr[arr.length - 1]myArray获取最后一个元素:



var myArray = [[1, 3, 5], [55, 66, 77], [0, 1, 2]]; 
var lastElements = myArray.map(arr => arr.pop());
console.log(lastElements);




答案 7 :(得分:0)

也许用for循环遍历它们。

lastElement = [];

for (var i = 0 ; i < myArray.length ; i++) {
    lastElement.push(_.last(myArray[i]));
}

答案 8 :(得分:0)

使用以下代码: -

var myArray = [[1, 3, 5], [55, 66, 77], [0, 1, 2]];
lastElement = _.map(myArray, _.last);
console.log(lastElement)
// **Result is lastElement = [5, 77, 2];**
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.5/lodash.min.js"></script>