gpt4 book ai didi

javascript - 奇怪的行为 "for in"语句 (NodeJS)

转载 作者:行者123 更新时间:2023-12-01 03:21:16 25 4
gpt4 key购买 nike

我想我错过了使用“for in”语句的一些内容。我有一个从 mongoDB 查询(nodejs + mongoose)返回的 JSON 文档,他的结构如下:

  [{  
"_id":"596f2f2ffbf8ab12bc8e5ee7",
"date":"1500458799794",
"questionId":4249,
"__v":0,
"myArray":[
"1234567",
"8901234",
"5678901"
]
},
{
"_id":"596f2f2ffbf8ab12bc8e5ee5",
"date":"1500458799795",
"questionId":4245,
"__v":0,
"myArray":[
"1234565",
"5678905"
]
}]

在“for in”cicle 中,我获取每个文档并进入另一个文档,我想迭代数组“myArray”。问题是当我尝试迭代数组“myArray”时。如果我用“for in”语句迭代它,我会收到很多其他错误的东西,就像我迭代查询返回的文档一样:

  [null,{},{"_id":"596f2f2ffbf8ab12bc8e5ee7","date":"1500458799794","questionId":4249,"__v":0,"myArray"["1234567","8901234","5678901"]},null,null,....,"myArray",true,[],{"caster":{"enumValues":[],"regExp":null,"path":"myArray","instance":"String","validators":[],"setters":[],"getters":[],"options":{},"_index":null},"path":"whoDislikes","instance":"Array"....etc etc... ]

如果我用经典的 for 语句迭代它,一切都很好: ojit_代码

为什么?代码如下:

  for(question in data){
var myArray=data[question].myArray;
console.log(JSON.stringify(myArray)); //this print ["1234567","8901234","5678901"]

for(var i=0;i<myArray.length;i++){
console.log(myArray[i]); //this print ["1234567","8901234","5678901"]
}
for(element in myArray){
console.log(myArray[element]); //this print a lot of wrong stuff!
}
}

最佳答案

这是因为 Mongoose 返回一个 Document,所以您看到的属性是原型(prototype)链上方的属性。

我认为您要么需要在 for...in 循环中进行 hasOwnProperty 测试,使用经典循环,或者使用 myArray.forEach(function (element) {});

关于javascript - 奇怪的行为 "for in"语句 (NodeJS),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45189320/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com