【问题标题】:Javascript: object from array, what contains object with idJavascript:来自数组的对象,包含具有 id 的对象
【发布时间】:2014-10-21 11:21:49
【问题描述】:

我有一个这样的数组:

[
  {id: 32, color: 'ff00dd'},
  {id: 64, color: 'ab230b'},
  {id: 102, color: '5f561d'}
]

我怎样才能把它转换成这种格式:

{ 32: 'ff00dd', 64: 'ab230b', 102: '5f561d'}

(LoDash 可用)

提前致谢!

【问题讨论】:

  • 我能问一下您为什么倾向于这样做吗?

标签: javascript arrays object lodash


【解决方案1】:

没有 LoDash,一个简单的 for 循环可以为我们做到这一点:

var data = [
    {id: 32, color: 'ff00dd'},
    {id: 64, color: 'ab230b'},
    {id: 102, color: '5f561d'}
  ],
  obj = {};

for (var i = 0; i < data.length; i++)
    obj[data[i].id] = data[i].color;

console.log(obj);
Open your JavaScript console to see the result.

上面sn -p中控制台登录的输出是:

> Object {32: "ff00dd", 64: "ab230b", 102: "5f561d"} 

【讨论】:

    【解决方案2】:

    使用 lodash:

    _.zipObject(_.pluck(a, 'id'), _.pluck(a, 'color'));
    

    【讨论】:

      【解决方案3】:

      您可以遍历数组中的对象,然后将每个对象添加为新对象的属性:

      var data = [
        {id: 32, color: 'ff00dd'},
        {id: 64, color: 'ab230b'},
        {id: 102, color: '5f561d'}
      ];
      var newObject = {};
      
      _(data).forEach(function(obj) {
          newObject[obj.id] = obj.color;
      });
      

      【讨论】:

        猜你喜欢
        • 2016-01-30
        • 1970-01-01
        • 1970-01-01
        • 2020-11-15
        • 2022-11-18
        • 2019-07-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多