我有JSON数据,我已将该数据转换为对象数组,并使用.slice(0)方法将该数组分配到另一个数组中。
当我尝试从指定的数组中删除某些元素时,它会从原始元素中删除相同的元素。
但我不想在任何时候改变原来的阵列。
var values = [
{
"timeId":"201501010100",
"Week1Volume": 2454721,
"Week2Volume": 7017731,
"Week3Volume": 5656528,
"Week4Volume": 2472223
},
{
"timeId":"201501010200",
"Week1Volume": 2454721,
"Week2Volume": 7017731,
"Week3Volume": 5656528,
"Week4Volume": 2472223
},
{
"timeId":"201501010300",
"Week1Volume": 1999120,
"Week2Volume": 5355235,
"Week3Volume": 5120254,
"Week4Volume": 2607672
}]; // This is my JSON data
var weekNames = d3.keys(values[0]).filter(function(key) { return key !== "timeId" && key!== "weeksVolume";});;
values.forEach(function(d) {
d.weeksVolume = weekNames.map(function(name) { return {name: name, value: +d[name]}; });
}); // original array
var data = values.slice(0); // Data is my new array
function removeFromSecondArray(){
// Here I am removing the first object of weekVolumes from each object of the array
data.forEach(function(d) {
d.weeksVolume.splice(1,1);
});
};
但执行上述功能后,“值”的第1个元素也被删除了。
答案 0 :(得分:0)
也许这是你的问题:
复制JSON对象时,您将创建对旧对象的引用。因此,将对两个对象执行对一个引用执行的任何操作。 因此,您应该像这样应用深层复制,然后应用进一步的操作。
var newObj=JSON.parse(JSON.stringify(oldObj));
我希望这会对你有所帮助。这是一份深刻的副本。它不会创建引用。