在代码部分中,我得到了一个典型的JSON对象
想知道NodeJS中最好的循环方法是什么,由于某种原因,棉绒不喜欢我使用for(表示myArray的项),因为它抱怨“ ForOfStatement”。
我当前的输出如下:
Cont { id: 'Something1', mycontent: { foo: '1', bar: '1' } }
Cont { id: 'Something2', mycontent: { foo: '3', bar: '7' } }
那么我假设丢失了一些值是由于我使用Object.Entries作为其键值对,那么循环并保留这些键的最佳方法是什么?
myObject = [{
"id": "Something1",
"mycontent": [{
"foo": "12",
"foo": "1",
"bar": "1"
}]
},
{
"id": "Something2",
"mycontent": [{
"foo": "3",
"bar": "5",
"bar": "7"
}]
}
]
Object.entries(myObject).forEach((item) => {
let myContent = item[1];
console.log("Cont", myContent);
});
我希望对象的输出显示为:
Something 1: foo: 12, 1 : bar 1; Something2 : foo: 3, bar: 5, 7
由于我有重复的键,不确定如何输出这些键
答案 0 :(得分:1)
因此丢失一些我认为的值是由于我使用Object.Entries作为其键值对
您不会因为Object.Entries而丢失值,而是在尝试定义“ myObject”对象时就丢失了它们。 在JS对象中,每个键都是唯一的。 当您尝试定义此对象时:
{
"id": "Something2",
"mycontent": {
"foo": "3",
"bar": "5",
"bar": "7"
}
}
您基本上只设置了一次“ bar”键,而第二个分配则覆盖了第一个分配,这就是得到输出的原因:
Cont { id: 'Something2', mycontent: { foo: '3', bar: '7' } }
代替
Cont { id: 'Something2', mycontent: { foo: '3', bar: '5', bar: '7' } }
作为一个小测试,尝试运行以下代码:
const myObj = {
foo: '3',
foo: '7'
};
console.log(myObj);
您会注意到输出为{foo: "7"}
,因为新值未附加到先前值,也未添加相同的键。
答案 1 :(得分:0)
据我所知,任何对象中的键都存储为字符串,当您两次使用相同的键foo时,它将覆盖第一个foo键值,并且两次使用bar都将覆盖它,只有最后一个bar键将被存储。您可以通过将foo和bar转换为数组以保存多个值来操纵存储的数据。
答案 2 :(得分:0)
您需要使用Array.prototype
中的方法对其进行循环:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach
myObject.forEach((item) => {
const myContent = item[1];
console.log("Cont", myContent);
});
答案 3 :(得分:0)
我设法解决了问题,以拔出重复的钥匙
myobject.map((c) => {
const foo = c.mycontent
.filter(label => label.type ==='foo')
.map(label => label.code
.join(', ');
const bar = c.mycontent
.filter( ....... filter on bar just like above