【问题标题】:How to check if the children exist in arrray of objects using javascript?如何使用javascript检查子对象是否存在于对象数组中?
【发布时间】:2019-10-15 11:53:41
【问题描述】:

我想使用 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")
}

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

【问题讨论】:

  • if(arrayName[0].children){. . . } 要检查每个数组项,请将此行放在一个循环中,该循环迭代整个数组并将0 替换为您的循环计数器。
  • 谢谢我想检查孩子是否存在...意思是 children.length === 0 表示不存在孩子数组。但在这种情况下不起作用。
  • 我可以提供样本数据吗?
  • if (arr_obj && arr_obj[0] && arr_obj[0].children ...) 怎么样?

标签: javascript


【解决方案1】:

*Edited 另外你应该先检查数组 (arr_obj && arr_obj.length > 0 && arr_obj[0].hasOwnProperty('children') && arr_obj[0].children.length > 0 ) 然后为真,否则为假。

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

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")
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-30
    • 2017-08-25
    • 1970-01-01
    • 1970-01-01
    • 2020-06-18
    • 2019-07-06
    相关资源
    最近更新 更多