【问题标题】:How to convert values to array of objects如何将值转换为对象数组
【发布时间】:2016-04-24 22:25:58
【问题描述】:

假设我有这个数据:

var id = 81;
var categories = [1, 2, 3, 4, 5];

如何将其转换为:

[{id: 81, category: 1}, {id: 81, category: 2}, {id: 81, category: 3}, {id: 81, category: 4}, {id: 81, category: 5}]

有没有一种优雅的方式来使用下划线或lodash?

【问题讨论】:

    标签: javascript underscore.js lodash


    【解决方案1】:

    这里不需要库。

    const result = categories.map(x => ({ id, category: x }))
    

    【讨论】:

      【解决方案2】:

      Working Example JSBin

      var id = 81;
      var categories = [1, 2, 3, 4, 5];
      var arr = [];
      
      for (var i = 0; i < categories.length; i++) {
        arr.push({id: id, category: categories[i]});
      }
      

      或者:

      var a = categories.map(function(a) {
        return {id: id, category: a};
      });
      

      【讨论】:

        【解决方案3】:

        您不需要任何库,只要好的旧 Vanilla JS 即可。

        var newArray = categories.map(function(item) {
          return {id: id, cetegory: item}
        });
        

        【讨论】:

        • 讽刺的是:Vanilla.js 是一个库,一个 0 字节库
        【解决方案4】:

        使用 Lo-Dash/Underscore,代码将是:

        var result = _.map(categories, x => ({ id, category: x }));
        

        但这其实比纯JS方案要长(from Роман Парадеев):

        var result = categories.map(x => ({ id, category: x }));
        

        【讨论】:

          猜你喜欢
          • 2019-01-14
          • 2019-12-02
          • 2019-07-29
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-11-07
          • 2018-02-13
          相关资源
          最近更新 更多