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