2016-04-21 4 views
-3

Я создаю несколько массивов, в которых один объект, я хочу построить новый, содержащий каждый объект. Вот мой код:построить новый массив, который содержит несколько массивов

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' } 
] 
+0

ходу 'вар URLS = [];' из цикла – Grundy

+0

я закрыть Braquet позже, так что это нормально я не показывал u – xenurs

ответ

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); 
+0

Я принимаю ваш ответ как можно скорее, это было довольно просто .. :) – xenurs

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" 
})); 
3

Я думаю, что вы хотите:

console.log(JSON.stringify(urls)) 

То, что вы видите в консоли на самом деле объекты быть в списке, нужно просто расширить их, нажав на вниз стрелка рядом [Объект]

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)) 
+0

вы получаете массив строк, но OP хотите получить массив объектов – Grundy

2

Вы можете избежать ошибок, как это, если будет использовать map

var urls = tabuser.map(function(user){ 
    return { 
     url: JSON.stringify("https://cubber.zendesk.com/api/v2/users/" + user.id + "/tickets/requested.json") 
    }; 
}); 
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); 
Смежные вопросы