首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >javascript / es6 -如何获取数组长度大于0的第一个对象值的索引

javascript / es6 -如何获取数组长度大于0的第一个对象值的索引
EN

Stack Overflow用户
提问于 2017-08-23 01:05:39
回答 3查看 524关注 0票数 0

我有一个充满数组的对象:

const errors = { name: [], date: ['invalid format'], ... }

我想要找到errors对象中数组长度大于1的第一个值的索引(或者对象键,如果我不能获得索引的话)。因此,在上面的示例中,date数组是对象中第一个有长度的数组,因此如果需要,我最好返回1date

有人知道用javascript / es6做这件事最简洁最快的方法吗?

EN

回答 3

Stack Overflow用户

发布于 2017-08-23 01:09:12

您可以在Object.keys()上使用find(),它将返回第一个匹配条件或未定义的结果。

代码语言:javascript
运行
复制
const errors = { name: [], date: ['invalid format']}
var result = Object.keys(errors).find(e => errors[e].length);
console.log(result)

票数 1
EN

Stack Overflow用户

发布于 2017-08-23 01:11:13

JavaScript对象对其属性没有固有的顺序,因此如果索引确实显着,您可能希望使用数组来代替。

在这一点上,它就像errors.findIndex(e => e.length > 1)一样,可以根据您认为合适的方式进行调整。

票数 0
EN

Stack Overflow用户

发布于 2017-08-23 01:11:41

您可以使用for ..in遍历对象,使用Object.prototype.toString检查该值是否为数组。

此外,为了找到索引,您可能需要使用Object.keys,它将从对象创建一个键数组。Js对象没有index

代码语言:javascript
运行
复制
const errors = {
  name: [],
  test: 1,
  date: ['invalid format'],
  test2: 2
}
for (var keys in errors) {
  if (Object.prototype.toString.call(errors[keys]) === '[object Array]' && errors[keys].length > 0) {
    console.log(errors[keys])
}
}

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45823368

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档