我有一个充满数组的对象:
const errors = { name: [], date: ['invalid format'], ... }
我想要找到errors对象中数组长度大于1的第一个值的索引(或者对象键,如果我不能获得索引的话)。因此,在上面的示例中, date 数组是对象中第一个有长度的数组,因此如果需要,我最好返回 1 或 date 。
date
1
有人知道用javascript / es6做这件事最简洁最快的方法吗?
发布于 2017-08-23 01:09:12
您可以在 Object.keys() 上使用 find() ,它将返回第一个匹配条件或未定义的结果。
Object.keys()
find()
const errors = { name: [], date: ['invalid format']} var result = Object.keys(errors).find(e => errors[e].length); console.log(result)
发布于 2017-08-23 01:11:13
JavaScript对象对其属性 没有固有的顺序,因此如果索引确实显着,您可能希望使用数组来代替。
在这一点上,它就像 errors.findIndex(e => e.length > 1) 一样,可以根据您认为合适的方式进行调整。
errors.findIndex(e => e.length > 1)
发布于 2017-08-23 01:11:41
您可以使用 for ..in 遍历对象,使用 Object.prototype.toString 检查该值是否为数组。
for ..in
Object.prototype.toString
此外,为了找到索引,您可能需要使用Object.keys,它将从对象创建一个键数组。Js对象没有 index
index
const errors = { name: [], test: 1, date: ['invalid format'], test2: 2