繁体   English   中英

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

[英]How to copy an array of JSON objects in javascript

我在JavaScript中有一组对象。 例如current_films[0].f_name, current_films[0].f_pattern等。我想将数组复制到另一个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];
                }
    }

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

任何帮助将不胜感激。 谢谢!

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

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

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

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

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

我猜测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对象复制”所希望的行为。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM