0

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

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

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

PS你能提一下为什么上面的代码不起作用吗?如,如果我放一个alert("Reached here");,它不会被执行。任何想法为什么会这样?

4

2 回答 2

2

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

您也可以使用它JavaScript's Array.filter()来更轻松地执行此操作。过滤器将从您的函数返回的原始数组中返回一个新的值数组true

var temp = current_films.filter(function(film) {
  return (film.f_material === Value);
});
于 2013-10-12T16:32:59.793 回答
0

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

我猜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

如果这不是 Google 对“javascript 对象复制”的期望行为。

于 2013-10-12T17:09:24.780 回答