构建包含多个数组的新数组

时间:2016-04-21 14:44:48

标签: javascript arrays

我构建了几个包含对象的数组,我想要的是构建一个包含每个对象的新数组。这是我的代码:

for(i = 0; i < tabuser.length; i++){
    var urls = [];
    urls.push({
        url: JSON.stringify("https://cubber.zendesk.com/api/v2/users/"+tabuser[i].id+"/tickets/requested.json")
    });
console.log(urls);

这是我的console.log(urls)

enter image description here

我想要这样的事情:

[ 
    { newurl: 'ajax1.html' },
    { newurl: 'ajax2.html' },
    { newurl: 'ajax3.html' }
]

6 个答案:

答案 0 :(得分:7)

您正在每个循环中重新创建数组。请改用以下内容:

var urls = [];
for(i = 0; i < tabuser.length; i++){
    urls.push({url:JSON.stringify("https://cubber.zendesk.com/api/v2/users/"+tabuser[i].id+"/tickets/requested.json")});
}
console.log(urls);

答案 1 :(得分:6)

for之前移动数组声明。如果将其保存在for内,则将为每次迭代的数组初始化变量,并且将刷新其中的先前数据。

var urls = []; // <--- Move it here

for(i = 0; i < tabuser.length; i++) {
    urls.push({
        url: JSON.stringify("https://cubber.zendesk.com/api/v2/users/" + tabuser[i].id + "/tickets/requested.json")
    });
}

console.log(urls);

作为选项,您还可以使用Array#map。另请注意,如果JSON.stringify是原始的,则不需要id

var urls = tabuser.map(obj => ({
    url: "https://cubber.zendesk.com/api/v2/users/" + obj.id + "/tickets/requested.json"
}));

答案 2 :(得分:3)

我想你想要这个:

display: flex

您在控制台中看到的实际上是列出的对象,您只需要通过单击[对象]旁边的向下箭头展开它们

答案 3 :(得分:2)

您可以轻松地将当前数组映射到新数组,如下所示:

var urls = tabuser.map(function(t){
    return { newurl: "https://cubber.zendesk.com/api/v2/users/"+t.id+"/tickets/requested.json" };
});
console.log(JSON.stringify(urls))

答案 4 :(得分:2)

如果使用map

,您可以避免此类错误
var urls = tabuser.map(function(user){
    return {
        url: JSON.stringify("https://cubber.zendesk.com/api/v2/users/" + user.id + "/tickets/requested.json")
    };
});

答案 5 :(得分:1)

将其重写为

    var urls = [];
        for(i = 0; i < tabuser.length; i++)
        {
             urls.push({ 
    url:JSON.stringify("https://cubber.zendesk.com/api/v2/users/"+tabuser[i].id+"/tickets/requested.json")
});
        }
             console.log(urls);