我有一个场景,我有
var data = [
{
"x": 1,
"y": 0.27,
"classifier": 1
},
{
"x": 2,
"y": 0.88,
"classifier": 1
}
]
我想要另一个y = 1-y的对象data2,我得到:
var data2 = data.map(function(el) {el.y = 1-el.y; return el});
data2[0]
Object {x: 1, y: 0.73, classifier: 1}
data2[1]
Object {x: 2, y: 0.12, classifier: 1}
这是我想要数据的正确形式。但问题是我想保留原始数据。现在,即使数据也有变异数据。
data[0]
Object {x: 1, y: 0.73, classifier: 1}
data[1]
Object {x: 2, y: 0.12, classifier: 1}
地图是否适用于此处?我正确使用它吗?
答案 0 :(得分:1)
您正在修改原始元素对象,而不是原始数据的完整深层副本。
在函数中创建el的副本,然后计算新的.y
。例如:
var data2 = data.map(function(el) {
return {
x : el.x,
y : 1-el.y,
classifier : el.classifier
};
});
答案 1 :(得分:1)
创建一个新数组时,让它的值指向原始对象,通过赋值给对象属性进行变异。
相反,您也可以使用Object.assign
:
var data2 = data.map(function(el) {
return Object.assign({}, el, { y: 1-el.y });
});
或使用箭头功能:
var data2 = data.map( el => Object.assign({}, el, { y: 1-el.y }) );
var data = [
{
"x": 1,
"y": 0.27,
"classifier": 1
},
{
"x": 2,
"y": 0.88,
"classifier": 1
}
]
var data2 = data.map( el => Object.assign({}, el, { y: 1-el.y }) );
console.log (data);