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

Get the last element of each sub-array of an array

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

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

问题是当有这样一个矩阵时:

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

而想要的结果是

lastElement = [5, 77, 2];

有什么建议吗?

您可以使用 array.prototype.map 将每个子数组转换为其中的最后一个元素。如果您不想改变 myArray:

,您可以使用 array.prototype.poparr[arr.length - 1] 获取最后的元素

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

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

使用mapslice(不会改变原始数组)

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

或者你也可以使用 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 );

看看这个。使用 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)

你可以做到

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

也许用 for 循环遍历它们。

lastElement = [];

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

使用以下代码:-

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>

你可以简单地使用 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);