我正在尝试映射我的数组并在满足条件的情况下添加一些额外的字段。我的代码添加了我需要的额外字段。但是问题是,我的数组没有完全返回,内部的嵌套对象数组返回null []。我发现传播语法会引起问题吗?我该怎么办?
这是我的示例数组:
data = [{
"a": 1,
"b": 5,
"c": [{
"a": 1,
"b": 5
}, {
"a": 1,
"b": 5
}]
},
{
"a": 2,
"b": 6,
"c": [{
"a": 1,
"b": 5
}, {
"a": 1,
"b": 5
}]
},
{
"a": 3,
"b": 7,
"c": [{
"a": 1,
"b": 5
}, {
"a": 1,
"b": 5
}]
}
]
这是我的代码,可在满足条件时添加额外的字段:
[{
"a": 1,
"b": 5,
"c": [],
"d": 3,
"e": 1,
},
{
"a": 2,
"b": 6,
"c": [],
"d": 2,
"e": 2
},
{
"a": 3,
"b": 7,
"c": [],
"d": 3,
"e": 7
}
]
data = [{
"a": 1,
"b": 5,
"c": [{
"a": 1,
"b": 5
}, {
"a": 1,
"b": 5
}]
},
{
"a": 2,
"b": 6,
"c": [{
"a": 1,
"b": 5
}, {
"a": 1,
"b": 5
}]
},
{
"a": 3,
"b": 7,
"c": [{
"a": 1,
"b": 5
}, {
"a": 1,
"b": 5
}]
}
]
const output = data.map(function(x) {
if (this.has(x.a)) {
return {
...x,
"d": "",
"e": this.size
};
}
this.add(x.a);
return {
...x,
"d": this.size,
"e": ""
};
}, new Set());
console.log(output);
我需要我的字母“ c”属性,而不是返回null [],而是在映射之前返回相同的数据。
答案 0 :(得分:0)
扩展语法is not supported everywhere yet。
您可能想看看诸如Object.asign之类的替代方法。 警告:it's not supported everywhere either。
const data = [
{
"a": 1,
"b": 5,
"c": [{"a": 1, "b": 5}, {"a": 1, "b": 5}]
},
{
"a": 2,
"b": 6,
"c": [{"a": 1, "b": 5}, {"a": 1, "b": 5}]
},
{
"a": 3,
"b": 7,
"c": [{"a": 1, "b": 5}, {"a": 1, "b": 5}]
}
];
data.forEach(function(x) {
if (this.has(x.a)) {
x.d = '';
x.e = this.size;
} else {
this.add(x.a)
x.d = this.size;
x.e = '';
}
}, new Set());
console.log(data);