Javascript 对象数组数组-查找对象值并返回真/假(js)

Javascript 对象数组数组-查找对象值并返回真/假(js),javascript,arrays,Javascript,Arrays,我有如下对象数组: [ [ { id: 1, itemName: 'xxx', ... }, { id: 1, itemName: 'yyy', ... }, ... ], [ { id: 2, itemName: 'aaa', ... }, { id: 2, itemName: 'kkk'

我有如下对象数组:

[
  [
    {
      id: 1,
      itemName: 'xxx',
      ...
    },
    {
      id: 1,
      itemName: 'yyy',
      ...
    },
    ...
  ],
  [
    {
      id: 2,
      itemName: 'aaa',
      ...
    },
    {
      id: 2,
      itemName: 'kkk',
      ...
    },
    ...
  ],
  [
    {
      id: 3,
      itemName: 'kkk',
      ...
    },
    {
      id: 3,
      itemName: 'yyy',
      ...
    },
    ...
  ]
]
我试图检查数组中对象的任何itemName是否等于给定的字符串,但我坚持使用将这些数组和此类对象保持在一个数组中的解决方案。以下是我的解决方案:

  function isNameAcrossData(givenString){
    return arr.map(arrItem =>
      arrItem.find(item => item.itemId === givenString)
    );
  }

我的解决方案不返回布尔值,只返回一个包含对象的数组,其中包含givenString和未定义的最后一个数组元素。如何修改它以仅返回真/假值?

使用
。一些
中。一些
,以查看某些数组中是否至少有一个元素与条件匹配:

const isNameAcrossData=givenString=>arr.some(
subar=>subar.some(
({itemName})=>itemName==givenString
)
);
const arr=[{id:1,itemName:“xxx”},{id:1,itemName:“yyy”}],{id:2,itemName:“aaa”},{id:2,itemName:“kkk”}],{id:3,itemName:“kkkk”},{id:3,itemName:“yyy”}];
console.log(isNameAcrossData('xxx');

log(isNameAcrossData('doesntexist')
您可以使用
some
进行检查,并使用所需属性返回一个布尔值数组

函数mapHasValue(键,值){
返回data.map(array=>array.some(item=>item[key]==value));
}
var data=[{id:1,itemName:'xxx'},{id:1,itemName:'yyy'}],{id:2,itemName:'aaa'},{id:2,itemName:'kkk'}],{id:3,itemName:'yyy'}];
log(mapHasValue('id',3))您的代码返回

[未定义,未定义,未定义]
因为map返回一个数组,所以这种方法不起作用

您必须首先循环所有数据,并检查循环内部,然后在循环外部指定给某个变量true(如果存在匹配项)

基本上,您必须在循环数据之后返回。 两种情况下的工作示例:

const arr=[{id:1,itemName:“xxx”},{id:1,itemName:“yyy”}],{id:2,itemName:“aaa”},{id:2,itemName:“kkkk”}],{id:3,itemName:“kkkk”},{id:3,itemName:“yyy”}];
函数isNameAcrossData(给定字符串){
设isMatch=false;
arr.map(childArr=>{
childArr.map(obj=>obj.itemName==givenString?isMatch=true:null);
});
返回isMatch;
}
log(isNameAcrossData('kkk');
log(isNameAcrossData('bbb');

btw,您想检查什么?姓名还是身份证?请用一个例子添加想要的结果。
一些
,而不是
每一个
。但这样的细节会让答案“错误”或“正确”。如果问题不清楚,你应该结束投票。但似乎还有另外两个用户设法理解了这个问题,不管怎样。