Node.js 对象可以打出来,但对象的right_id属性就undefined了,这是怎么回事?

function unique(arr) {
  let array = [];
  // let obj = {};
  for (let i = 0; i < arr.length; i++) {
    let obj = arr[i];
    let params = array.findIndex(item => {
      item.right_id == obj.right_id;
    });
    console.log("第" + i);
    console.log(obj);
    console.log(obj._id);
    console.log(obj.right_id);
    console.log(params);
    params == -1 ? array.push(obj) : "";
  }
  return array;
}

方法是这样的

结果是这样的

对象里的_id 属性值可以打出来,但是right_id 就不行了

有大佬能告诉我这是怎么回事吗

感谢各位的回答,原因已经找出,是因为该字段为我后来加到表中的,在创建集合规则时没有补充该字段,导致在查询后,打不出该字段

let array = [];这个都是空的,哪里来的right_id这个属性呀。

那你调试一下,在log时obj.right_id到底有没有值啊

第一次循环的时候array数组为空

神奇,json能打印出,下一步尽然没有值了,没有其他异步方法在操作arr数组吧。。。~~

还有findIndex箭头函数要么直接let params = array.findIndex(item =>item.right_id == obj.right_id);

 

let params = array.findIndex(item => {return item.right_id == obj.right_id;});

 

要不params永远是-1

 

 

function unique(arr) {
  let array = [];
  for (let i = 0; i < arr.length; i++) {
    let obj = arr[i];
    console.log("第" + i);
    console.log(obj);
    console.log(obj._id);
    console.log(obj.right_id);
  }
  return array;
}

只是循环打印,结果也是这样

你的arr是不是在异步里的

function unique(arr) {
  let array = [];
  // let obj = {};
  for (let i = 0; i < arr.length; i++) {
    let obj = arr[i];
    let params = array.findIndex(item => {
      item.right_id == obj.right_id;
    });
    console.log("第" + i);
    console.log(JSON.stringify(obj));
    console.log(obj._id);
    console.log(obj.right_id);
    console.log(params);
    params == -1 ? array.push(obj) : "";
  }
  return array;
}

你这样打印试试,obj里应该不会有right_id了

您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

非常感谢您使用有问必答服务,为了后续更快速的帮您解决问题,现诚邀您参与有问必答体验反馈。您的建议将会运用到我们的产品优化中,希望能得到您的支持与协助!

速戳参与调研>>>https://t.csdnimg.cn/Kf0y