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

How to copy an array of JSON objects in javascript

本文关键字:JSON 对象 数组 复制 javascript      更新时间:2023-09-26

我在 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];
                }
    }

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

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

附言你能提到为什么上面的代码不起作用吗?例如,如果我放一个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对象复制"的行为。