Javascript 通过es6方式迭代嵌套数组,我已经使用foreach完成了

Javascript 通过es6方式迭代嵌套数组,我已经使用foreach完成了,javascript,arrays,javascript-objects,Javascript,Arrays,Javascript Objects,我已经使用forEach完成了迭代,代码正在运行,但是请您建议是否可以用es6的方式完成,我的实现是否正确 我已经完成了迭代,代码运行正常,但是我想知道更流畅的方法,以及这个实现是否正确 var arrayToBeChecked = [ { name: "one", objectvalue : { first : ['valueIamNotInterestedIn0'],

我已经使用forEach完成了迭代,代码正在运行,但是请您建议是否可以用es6的方式完成,我的实现是否正确

我已经完成了迭代,代码运行正常,但是我想知道更流畅的方法,以及这个实现是否正确

  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”不考虑对象索引so
objectvalue.second
不应该被检查?@HarijsDeksnis,任何objectvalue,但肯定在第一个(数组)中,我会检查,然后我认为我的答案应该适合你。它同时检查第一个和第二个。或者你想让它检查除这两个属性之外的任何其他属性吗?那么使用“some”或方法是否正确,或者两者是否都正确?我有一个问题,为什么没有使用array.find。请解释。谢谢你想要的是布尔值,而不是找到第一个值的对象。