javascript - 返回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'
它不为空。如何更正此代码?
解决方案
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));
您也可以使用reverse
and find
:
var myArray = [{'name':''},{'name':'b'},{'name':''}];
var last = [...myArray].reverse().find(curr => curr.name);
console.log(myArray.lastIndexOf(last));
推荐阅读
- c - 输出将如何打印?
- sql-server - 如何在 SQL Server 中的两个子字符串之间的单个逗号中替换多次出现的逗号
- python - 将两个numpy数组组合在一起
- alfresco - 使用 JAVA API 分配内容存储
- reactjs - 这里的currentState是什么意思
- android - 如何使用androidx.animation.AnimatorSet?
- python - Boto3 过滤掉 ACM 响应以查找特定证书 ARN
- python - 如何使用 Tweepy 通过带有语言和计数过滤器的主题标签流式传输推文?
- c++ - OpenMP 对数组的性能不佳
- excel - VBA excel拼写检查部分受保护的工作簿