Javascript 通过es6方式迭代嵌套数组,我已经使用foreach完成了
我已经使用forEach完成了迭代,代码正在运行,但是请您建议是否可以用es6的方式完成,我的实现是否正确 我已经完成了迭代,代码运行正常,但是我想知道更流畅的方法,以及这个实现是否正确Javascript 通过es6方式迭代嵌套数组,我已经使用foreach完成了,javascript,arrays,javascript-objects,Javascript,Arrays,Javascript Objects,我已经使用forEach完成了迭代,代码正在运行,但是请您建议是否可以用es6的方式完成,我的实现是否正确 我已经完成了迭代,代码运行正常,但是我想知道更流畅的方法,以及这个实现是否正确 var arrayToBeChecked = [ { name: "one", objectvalue : { first : ['valueIamNotInterestedIn0'],
var arrayToBeChecked =
[
{ name: "one",
objectvalue : {
first : ['valueIamNotInterestedIn0'],
second :'valueIamNotInterestedIn1'
}
},
{ name: "two",
objectvalue : {
first : ['valueIamLookingFor'],
second :'valueIamNotInterestedIn5'
}
},
{ name: "three",
objectvalue : {
first : ['valueIamNotInterestedIn5'],
second :'valueIamNotInterestedIn5'
}
}
]
var checkBoolean = false;
arrayToBeChecked.forEach(val => {
let selectedArray = val.objectvalue['first']
if(selectedArray.indexOf('valueIamLookingFor') > -1){
checkBoolean = true
}
})
console.log(checkBoolean)
您可以简单地使用而不是forEach,因为如果有任何元素匹配,则将checkBoolean
设置为true
var arrayToBeChecked=[{name:“一”,objectvalue:{first:['valueIamNotInterestedIn0'],second:'valueIamNotInterestedIn1'},{name:“两”,objectvalue:{first:['valueiamlooking'],second:'valueIamNotInterestedIn5'},{name:“三”,objectvalue:{first:['valueIamNotInterestedIn5'],second'iamnotinterestedin5'}]
var校验布尔=
已检查阵列。部分(val=>{
让selectedArray=val.objectvalue['first']
返回selectedArray&&selectedArray.indexOf('valueIAmlokingfor')>-1
})
log(checkBoolean)
ES6方法将首先将数组映射到您只感兴趣的值。
然后使用some
Array方法查找是否有任何项符合您的条件
此外,您可以使用返回布尔值的includes
来代替indexOf
const checkBoolean = arrayToBeChecked
.map(({ objectvalue }) => [...objectvalue.first, objectvalue.second ])
.some(v => v.includes('valueIamLookingFor'));
您当前的方法没有那么有效,因为即使在找到匹配项后,您仍将继续迭代。对于这种检查(查看数组的任何值是否与条件匹配),可以使用 以下是一个例子:
var数组被检查=[{
名称:“一”,
objectvalue:{
第一个:['valueIAmnotinterestin0'],
第二:“价值我不感兴趣1”
}
},
{
姓名:“两个”,
objectvalue:{
第一个:['valueiamlooking'],
第二条:“价值我不感兴趣5”
}
},
{
姓名:"三",,
objectvalue:{
第一个:['valueiamnotinterestin5'],
第二条:“价值我不感兴趣5”
}
}
];
const result=arraytobecked.some(({
objectvalue:{
第一
}
})=>first.includes('valueiamlokingfor');
控制台日志(结果)
您可以使用a来获取第一个
,它在truthy返回值上退出循环并检查该值
var arrayToBeChecked=[{name:“one”,objectvalue:{first:['valueIamNotInterestedIn0'],second:'valueIamNotInterestedIn1'},{name:“two”,objectvalue:{first:['valueiamlooking'],second:'valueIamNotInterestedIn5'},{name:“three”,objectvalue:{first:['valueIamNotInterestedIn5'],second,
checkBoolean=ArrayToBecked
.some({objectvalue:{first}})=>first.includes('valueiamlokingfor');
log(checkBoolean)代码>一个选项是映射到对象。每个项目的值
,展平数组,然后检查它是否。包括您要查找的内容:
var数组被检查=[{
名称:“一”,
objectvalue:{
第一个:['valueIAmnotinterestin0'],
第二:“价值我不感兴趣1”
}
},
{
姓名:“两个”,
objectvalue:{
第一个:['valueiamlooking'],
第二条:“价值我不感兴趣5”
}
},
{
姓名:"三",,
objectvalue:{
第一个:['valueiamnotinterestin5'],
第二条:“价值我不感兴趣5”
}
}
]
常量checkBoolean=arrayToBeChecked
.map(({objectvalue})=>Object.values(objectvalue))
.单位(2)
.包括('valueiamlooking');
console.log(checkBoolean)
如果您要查找的值实际上位于valueIamNotInterestedIn5
位置(而不是原始位置),是否需要匹配?是的,我的目标是只在第一个(数组)中检查“valueiamlokingfor”不考虑对象索引soobjectvalue.second
不应该被检查?@HarijsDeksnis,任何objectvalue,但肯定在第一个(数组)中,我会检查,然后我认为我的答案应该适合你。它同时检查第一个和第二个。或者你想让它检查除这两个属性之外的任何其他属性吗?那么使用“some”或方法是否正确,或者两者是否都正确?我有一个问题,为什么没有使用array.find。请解释。谢谢你想要的是布尔值,而不是找到第一个值的对象。