簡體   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