如何使用javascript检查子对象是否存在于对象数组中?

某个用户2491

我想使用javascript检查子对象是否存在于对象数组中。数据结构如下所示,

在此处输入图片说明

假设我将数据存储在变量 arr_obj 中,然后我尝试使用

if (arr_obj && arr_obj[0].children && arr_obj[0].children.length > 0) {
    console.log("children exists")
}  
if (arr_obj && !arr_obj[0].children) {
    console.log("children doesnt exist")
}

当子数组为 0 时,条件 (arr_obj && !arr_obj[0].children) 会抛出错误“无法读取未定义的属性子代”,有人可以帮我解决这个问题。谢谢。

乔治·斯塔夫鲁

*编辑 你也应该先检查数组(arr_obj && arr_obj.length > 0 && arr_obj[0].hasOwnProperty('children') && arr_obj[0].children.length > 0 )然后是真否则假。

如果我正确理解你的问题。我只是按照您上面的描述制作对象。我认为在过滤器或地图或减少中使用过滤器,您可以完成您的工作。你应该明白为什么在MDN 中使用 what 这将返回一个布尔值。如果真元素存在,假则不存在。第一个控制台检查它是否有特定的孩子,第二个控制台检查它是否有你上面描述的孩子。

var obj = [];

var parent1 = {};

parent1.children = [];

parent1.children.push({
  name: 'parent1_somename1'
})

parent1.children.push({
  name: 'parent1_somename2'
});
obj.push(parent1);

var parent2 = {};

parent2.children = [];

parent2.children.push({
  name: 'parent2_somename1'
})

parent2.children.push({
  name: 'parent2_somename2'
})

obj.push(parent2);

function checkIfExists(arrList, searchedItem) {
  var results = arrList.filter(function(element) {
    var resultsChild = element.children.filter(function(childElement) {
      return childElement.name === searchedItem;
    });

    if (resultsChild.length > 0) {
      return true;
    } else {
      return false;
    }
  })

  return results;
}


function checkIfItHasChildren(arrList) {
  var results = arrList.map(function(element) {
    return element.children.length > 0;

    if (results.length > 0) {
      return true;
    } else {
      return false;
    }
  })

  return results;
}


// Check if specific children exists
if (obj && checkIfExists(obj, 'parent2_somename2').length > 0) {
  console.log("children exists")
} else {
  console.log("children doesnt exist")
}



// Check if array has childrens
if (obj && checkIfItHasChildren(obj).length > 0) {
  console.log("It has children")
} else {
  console.log("It doesnt has children")
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如果使用jq,子对象是否存在于对象数组中,该如何修改?

检查对象是否存在于数组中

如何检查对象是否存在于Angular中的对象数组中

Javascript-检查对象是否存在于对象数组中并更新数量

如何使用Java检查指定对象是否存在于给定对象列表中

如何检查对象是否存在于多个数组中

如何使用JSON检查对象是否存在于JSON中

Javascript:检查键是否存在于对象数组中

如何检查元素是否存在于数组对象中

如何检查键是否存在于对象数组中

检查对象是否存在于属性中

在SOAP请求中设置对象的值之前,如何检查对象是否存在于数组中?

如何检查具有相同ID(或任何其他attribute)的对象是否存在于对象数组中?

如何检查当前数组中的对象是否存在于前一个数组中

如何使用JS检查对象是否存在于另一个对象中

如何检查对象是否存在于数组中并在AngularJS中为其提供ng-class

Typescript:按值检查对象是否存在于数组中

JAVA NullPointerException:检查对象是否存在于数组中?

推入之前检查对象是否存在于数组中

想要检查对象是否存在于数组中

C ++:如何检查具有特定属性的对象是否存在于集合中

如何反向检查对象是否存在于多对多 django 中?

在添加对象之前,如何检查具有相同ID的对象是否已存在于对象列表中?

reactjs如何过滤/检查数组中的任何对象是否存在于另一个对象数组中?

jQuery如何检查一组对象是否存在于另一个数组对象中

检查键是否存在于JavaScript对象中?

检查键值是否存在于Javascript对象中

如何检查我的变量是否存在于对象中?

如何检查元素是否存在于对象中?