如何将许多对象组合成一个对象数组

时间:2018-01-06 03:57:56

标签: javascript arrays object

我可能会对此表示不满,但我正在尝试解决这个问题:)嘿,我得到了这个......

parser(body, (err, result)=> {
                if(result.hasOwnProperty('feed')){
                    var result = JSON.parse(JSON.stringify(result.feed.entry));
                    for(var i = 0; i < result.length; i++){ 
                       var tube = result[i];
                       var tLink = tube.link[0].$.href;
                       var title = tube.title;
                       var id = tube['yt:videoId'][0];
                       var pic = tube['media:group'][0]['media:thumbnail'][0].$.url;
                       var results = {
                           url : tLink,
                           title : title[0],
                           thumb: pic,
                           id: id
                       };
    //WORKS FROM HERE UP NO ISSUES..trying to combine them all into one array of objects so below this is where I'm not having any luck :)
                       var res = [];
                       for (var j = 0; j < results; j++){
                          console.log(results[j]);
                          res.push(results[j]); 
                       }

                       this.sendSocketNotification("TUBE_RESULT", res);

它无法正常工作,我试图在此找到任何信息....

它返回单个对象,但我希望它们都在一个数组中......

建议或帮助将非常感谢!! :)

这就是我想要实现的目标:

enter image description here

这就是我目前所得到的:

enter image description here

4 个答案:

答案 0 :(得分:0)

您将结果定义为:

var results = {
  url : tLink,
  title : title[0],
  thumb: pic,
  id: id
};

然后

for (var j = 0; j < results; j++){
   console.log(results[j]);
   res.push(results[j]);   
}

结果是一个对象,你需要在for语句中使用整数。也许你想要的是结果而不是结果??

答案 1 :(得分:0)

您应该遍历对象并将它们放入数组中。我使用对象的keys数组来实现此目的。

var results = {
  url : tLink,
  title : title[0],
  thumb: pic,
  id: id
};

var arr = Object.keys(results).map(function (key) { 
   return results[key]; 
});

res.push(arr[j]);

答案 2 :(得分:0)

我想感谢你们所有人的帮助,答案是:

parser(body, (err, result) => {
                if (result.hasOwnProperty('feed')) {
                    var entries = JSON.parse(JSON.stringify(result.feed.entry)),
                        results = [];
                    for (var i = 0, entry; entry = entries[i]; i++) results.push({
                        'tLink': entry.link[0].$.href,
                        'title': entry.title[0],
                        'id': entry['yt:videoId'][0],
                        'pic': entry['media:group'][0]['media:thumbnail'][0].$.url
                    });

答案 3 :(得分:-1)

尝试更改for循环:

var res = [];
for (var j = 0; j < results; j++){
    console.log(results[j]);
    res.push(results[j]);   
}

到for-in循环:

var res = [];
for (var j in results){
    console.log(j + ": " + results[j]);
    res.push(results[j]);   
}