复制数组并提取

时间:2015-03-23 05:05:47

标签: javascript

我有一个对象数组

var val = [
    {
        "color": '#ABCDEF',
        "data": [
            {x: 1396328400000, y: 92, num: "243", den: "10"},
            {x: 1398920400000, y: 97, num: "239", den: "20"},
            {x: 1425189600000, y: 91, num: "158", den: "30"}
        ],
        "name":'X'
    },
    {
        "color": '#FEDCBA',
        "data": [
          {x: 1396328400000, y: 92, num: "134", den: "10"},
          {x: 1425189600000, y: 91, num: "210", den: "10"}
        ],
        "name":'Y'
    },
    {
        "color": '#ABCFED',
        "data": [
          {x: 1396328400000, y: 92, num: "110", den: "10"},
          {x: 1425189600000, y: 91, num: "10", den: "10"}
        ],
        "name":'Z'
    }
];

我使用valtemp复制到slice(0)并使用splice(2,2)上的temp进行提取,但这些值也会从原始数组中删除,我在这里失踪了什么?

temp = val.slice(0);
console.log(temp);
tempData.push(temp[0].data.splice(2, 2));
console.log(temp);
console.log(val);

jsfiddle

2 个答案:

答案 0 :(得分:0)

slice只能制作一份浅色副本。如果你想从temp [0] .data中提取而不修改它,你可以直接复制它:

tempData.push(temp[0].data.slice(0).splice(2, 2));

答案 1 :(得分:0)

怎么样的tempData变量.... ??如果它不是你的代码的一部分,那么你必须使用temp而不是temp var temp = val.slice(0); console.log(temp); temp.push(temp[0].data.splice(2, 2)); console.log(temp); console.log(val);