我有一个充满数组的对象:
const errors = { name: [], date: ['invalid format'], ... }
我想要找到errors对象中数组长度大于1的第一个值的索引(或者对象键,如果我不能获得索引的话)。因此,在上面的示例中,date
数组是对象中第一个有长度的数组,因此如果需要,我最好返回1
或date
。
有人知道用javascript / es6做这件事最简洁最快的方法吗?
发布于 2017-08-23 01:09:12
您可以在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)
一样,可以根据您认为合适的方式进行调整。
发布于 2017-08-23 01:11:41
您可以使用for ..in
遍历对象,使用Object.prototype.toString
检查该值是否为数组。
此外,为了找到索引,您可能需要使用Object.keys,它将从对象创建一个键数组。Js对象没有index
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])
}
}
https://stackoverflow.com/questions/45823368
复制相似问题