如何在javascript中复制JSON对象数组

时间:2013-10-12 16:23:24

标签: javascript

我在JavaScript中有一组对象。例如current_films[0].f_name, current_films[0].f_pattern等我希望将数组复制到另一个类似于以下的数组:

for(var i=0; i<current_films.length; i++)
    {
            if(current_films[i].f_material == Value)
                {
                    temp[i] = current_films[i];
                }
    }

然而,当我这样做时似乎有一个莫名其妙的问题。由于莫名其妙的问题,我的意思是代码没有执行,数组也没有按照我的意愿复制。

非常感谢任何帮助。 谢谢!

P.S。你能否提一下为什么上面的代码不起作用?就像在,如果我放一个alert("Reached here");,它就没有被执行。任何想法为什么会如此?

2 个答案:

答案 0 :(得分:2)

我看到的一个问题是您将temp[i]设置为值,这意味着temp数组中会出现间隙。您可以使用push()将值附加到temp,这样您就不需要管理两组索引。

你也可以使用JavaScript's Array.filter()来做到这一点。 Filter将返回原始数组中值的新数组,其中函数返回true

var temp = current_films.filter(function(film) {
  return (film.f_material === Value);
});

答案 1 :(得分:0)

  

P.S。你能否提一下为什么上面的代码不起作用?就像在,如果我发出警报(“在这里到达”);它没有被执行。任何想法为什么会如此?

我认为没有为数组中的每个元素定义 f_material

如果是这种情况我会使用

if(typeof(current_films[i].f_material)!=='undefined')
{
    if(current_films[i].f_material == Value)
    {
        temp[i] = current_films[i];
    }
}

无论如何,我建议你熟悉浏览器的javascript调试器(假设代码在浏览器中运行)

最后请注意,您并非复制数组/对象:

temp [i]是current_films [i]的参考

稍后在代码中修改 current_films 会导致修改 temp

如果这不是谷歌“javascript对象复制”所希望的行为。