如何将数组复制到数组

how to copy array to array

本文关键字:数组 复制      更新时间:2023-09-26
var ce_info=[
{location:"inchannel",name:"Jae Jung",volume:"50",url:"img/jae.jpeg",group:1},
{location:"inchannel",name:"Houston",volume:"50",url:"img/houston.jpeg",group:1},
{location:"inchannel",name:"Jun kuriha..",volume:"50",url:"img/jun.jpeg",group:1},
{location:"inchannel",name:"Andrea Melle",volume:"50",url:"img/andrea.jpeg",group:0},
{location:"inchannel",name:"Tomoaki Ohi..",volume:"50",url:"img/ohira.jpeg",group:0},
{location:"inchannel",name:"Woosuk Cha..",volume:"50",url:"img/woosuk.jpeg",group:0},
{location:"inchannel",name:"Luca Rigaz..",volume:"50",url:"img/luca.jpeg",group:0},
{location:"inchannel",name:"SooIn Nam",volume:"50",url:"img/sooin.jpeg",group:0}
];
var inch_info=[{location:"ichat",name:"",volume:"50",url:""}];
for(i=0;i<ce_info.length;i++)
{   
    if(ce_info[i].location=="inchat")
    {       
        inch_info[inchat_count].name=ce_info[i].name;
        inch_info[inchat_count].url=ce_info[i].url;
        inchat_count++;
    }
}

我正在尝试将ce_info复制到inch_info。似乎它不起作用。当我尝试将ce_info复制到inch_info时出现错误有什么想法吗?

复制本机 JS 数组很容易。使用 Array.slice() 方法创建数组部分/全部的副本。

var foo = ['a','b','c','d','e'];
var bar = foo.slice();

现在 Foo 和 bar 是 'a'、'b'、'c'、'd'、'e' 的 5 个成员数组

inchat_count似乎未初始化。

var inch_info=[{location:"icha",name:"",volume:"50",url:""}];
var inchat_count = 0; // You forgot this line!!
for(i=0;i<ce_info.length;i++)
{   
    if(ce_info[i].location=="inchat")
    {       
        inch_info[inchat_count].name=ce_info[i].name;
        inch_info[inchat_count].url=ce_info[i].url;
        inchat_count++;
    }
}

你的代码中仍然有一个typeO

var inch_info=[{location:"ichat",name:"",volume:"50",url:""}];

位置不应该是 inchat 而不是 ichat?因为这是您在此行中检查的内容

if(ce_info[i].location=="inchat")

此外,在ce_info中没有名为 inchat 的位置,因此不会执行这段代码的结果。但是,如果ce_info中有一个元素具有 inchat 中的位置,这将是您将位置和名称添加到inch_info数组所需的代码。

更改您的 for 循环:

for(var eElem in ce_info)
{   
    if(ce_info[eElem].location=="inchannel")
    {
        var temp = {};
        temp.name=ce_info[eElem].name;
        temp.url=ce_info[eElem].url;
        inch_info.push(temp);
    }
}

使用jQuery您可以如此轻松地实现它:

在此处查看工作演示

遵循 jQuery 代码可确保您没有 ce_infoby reference对象。

j查询代码:

var inch_info= jQuery.extend(true, {}, ce_info);
alert("inch_info: before changing text: "+inch_info[0].location);
inch_info[0].location = "hello world"
alert("inch_info: after changing text: "+inch_info[0].location);
alert("ce_info: after changing text: "+ce_info[0].location);