【问题标题】:Working with array of object in javascript在javascript中使用对象数组
【发布时间】:2015-07-19 15:53:21
【问题描述】:

当我在 Javascript 中处理对象数组时遇到问题。

问题:输入

[ { "艺术家名": "NgaNguyen Duy", “workId”:“554a9e4fa36f794b31000024” }, { "艺术家名": "NgaNguyen Duy", “workId”:“554d3ffbcc477a7110000003” }, { “艺术家名”:“克里斯汀”, “workId”:“557a4kfbcc5e2a7110000223” } ]

输出应该是:

[ { "艺术家名": "NgaNguyen Duy", “workId”:[“554a9e4fa36f794b31000024”,“554d3ffbcc477a7110000003”] }, { “艺术家名”:“克里斯汀”, “workId”:[“557a4kfbcc5e2a7110000223”] } ]

提前致谢。

【问题讨论】:

  • 你在哪里卡住了?你尝试了什么?出了什么问题?
  • 1.当前如何生成给您意想不到的输出? 2. 你试过什么?
  • 你应该使用对象而不是数组来存储键值对...{Kristin: ["12343"], "NgaNguyen Duy": [123,456] }
  • 有什么问题?
  • 你使用“NgaNguyen Duy”两次作为键

标签: javascript arrays object


【解决方案1】:
You can do aggregate :

var t =  [
    {  
        "artistName": "NgaNguyen Duy",
        "workId": "554a9e4fa36f794b31000024"
    }, 
    {
        "artistName": "NgaNguyen Duy",
        "workId": "554d3ffbcc477a7110000003"
    },
    {
        "artistName": "Kristin",
        "workId": "557a4kfbcc5e2a7110000223"
    }
    ];


var u = {};
var res = [];

t.forEach(function(item){
    if(!u[item.artistName]){        
         u[item.artistName] = [];  
    }
    u[item.artistName].push(item.workId);

});

for(var key in u){
    res.push({'artistName':key,'workId':u[key]});
}

console.log(res);


https://jsfiddle.net/Lgbcxorj/

【讨论】:

    【解决方案2】:

    所以您希望合并“workId”的名称相似的条目?:

    var artists_in =     [
    {  
        "artistName": "NgaNguyen Duy",
        "workId": "554a9e4fa36f794b31000024"
    }, 
    {
        "artistName": "NgaNguyen Duy",
        "workId": "554d3ffbcc477a7110000003"
    },
    {
        "artistName": "Kristin",
        "workId": "557a4kfbcc5e2a7110000223"
    }
    ]
    
    var artists_out = {}
    for (i = 0; i < artists_in.length; i++)
    {
      artistKey = artists_in[i]["artistName"];
      if(artists_out[artistKey] == null)
      {
        artists_out[artistKey] = { "artistName": artistKey, "workId": [artists_in[i]["workId"]] };
      }
      else
      {
        artists_out[artistKey]["workId"].push(artists_in[i]["workId"]);
      }
    }
    
    console.log(artists_out);
    

    https://jsfiddle.net/hv9dtd8w/4/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-10-14
      • 2015-10-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-31
      相关资源
      最近更新 更多