在对象数组中找到值

时间:2019-03-23 20:00:50

标签: javascript node.js

我有对象数组,我不能接收它的一个属性的值。 row.parent_id的Console.log未定义 请说明为什么每个对象都具有parent_id属性

 [{ _id: 5c94b9f0e5a1cf63ccb29bd1,
   parent_id: 0,
   title: 'Home',
   icon: 'fa fa-lg fa-fw fa-home',
   route: '/home',
   badge: [] },
 { _id: 5c94b9f0e5a1cf63ccb29bd2,
   parent_id: 0,
   title: 'Blog',
   icon: 'fa fa-lg fa-fw fa-blogger',
   route: '/views/blog',
   badge:
    { label: 'hot',
      class: 'badge pull-right inbox-badge bg-color-yellow' } }]

   docs.forEach (function (row,key) {
           console.log('par',row.parent_id)
          if(row.parent_id === 0 ){
              result.push(row)
          }
      })
      console.log('res',result)

我不明白为什么,但是如果我手动将这个对象添加到变量中,它会起作用,但是如果我从mongo db中获得它,它就不会起作用,但是对象是相同的

2 个答案:

答案 0 :(得分:0)

首先,您在代码中存在一些错误,缺少引号和两个对象之间的逗号。如果要检查,是否每个对象都具有parent_id属性,请使用过滤器fn。

const docs = [{ _id: "5c94b9f0e5a1cf63ccb29bd1",
   parent_id: 0,
   title: 'Home',
   icon: 'fa fa-lg fa-fw fa-home',
   route: '/home',
   badge: [] },
 { _id: "5c94b9f0e5a1cf63ccb29bd2",
   parent_id: 0,
   title: 'Blog',
   icon: 'fa fa-lg fa-fw fa-blogger',
   route: '/views/blog',
   badge:
    { label: 'hot',
      class: 'badge pull-right inbox-badge bg-color-yellow' } }]

console.log(docs.filter(item => item.parent_id !== 'undefined'))

请注意,当与0比较时,!=总是返回false,!=='undefined'检查是否存在值。如果您的情况下0不是正确的值,则只需与0进行比较。

答案 1 :(得分:0)

您是否检查过for循环执行是否在块内? 该对象看起来不像数组。 数组元素必须用,分隔。 从逻辑上看,您似乎要过滤掉parent_id不为零的所有元素。可以像这样

reult = docs.filter(element => element.parent_id === ‘0’)