首页 > 解决方案 > 返回javascript中最后一个非空对象的索引

问题描述

我正在尝试获取对象数组中最后一个非空名称的索引。我尝试了下面的代码:

var myArray = [{'name':''},{'name':'b'},{'name':''}];
var last = myArray.reduce((acc, curr) => curr ? curr : acc);
console.log(myArray.lastIndexOf(last))

日志始终显示 2。输出应为 1,因为name == 'b'它不为空。如何更正此代码?

标签: javascriptarraysassociative-array

解决方案


curr在您的情况下始终是对象,并且对象始终是真实的。您不应该检查 的值curr,而是检查 的值curr.name

var myArray = [{'name':''},{'name':'b'},{'name':''}];
var last = myArray.reduce((acc, curr) => curr.name ? curr : acc);
console.log(myArray.lastIndexOf(last));

您也可以使用reverseand find

var myArray = [{'name':''},{'name':'b'},{'name':''}];
var last = [...myArray].reverse().find(curr => curr.name);
console.log(myArray.lastIndexOf(last));


推荐阅读