【问题标题】:javascript: create an array of JSON objects from linking two arraysjavascript:通过链接两个数组创建一个 JSON 对象数组
【发布时间】:2016-10-02 20:49:36
【问题描述】:

假设我有两个数组:

  var  meals: ["breakfast", "lunch", "dinner"];
  var ingredients: [["eggs", "yogurt", "toast"],["falafel", "mushrooms", "fries"], ["pasta", "cheese"];

是否有一个优雅的解决方案来创建一个 JavaScript 对象数组,其特点是:

var dailySchedule = {"breakfast" : ["eggs", "yogurt", "toast"],
                      "lunch": ["falafel", "mushrooms", "fries"],
                      "dinner": ["pasta", "cheese"]
}

我知道它应该是 .reduce 的东西,但我一直在摸索如何做到这一点......

【问题讨论】:

  • 使用 for(...) 循环 :)
  • JSON 是文本数据,你要的是纯 JavaScript 对象。

标签: javascript arrays data-structures javascript-objects


【解决方案1】:

当然,你可以减少它

var meals = ["breakfast", "lunch", "dinner"];
var ingredients = [
  ["eggs", "yogurt", "toast"],
  ["falafel", "mushrooms", "fries"],
  ["pasta", "cheese"]
];

var dailySchedule = meals.reduce( (a,b, i) => {
	return a[b] = ingredients[i], a;
},{});

console.log(dailySchedule)
.as-console-wrapper {top : 0}

【讨论】:

    【解决方案2】:

    只需使用Array#forEach

    forEach() 方法对每个数组元素执行一次提供的函数。

    var meals = ["breakfast", "lunch", "dinner"],
        ingredients = [["eggs", "yogurt", "toast"], ["falafel", "mushrooms", "fries"], ["pasta", "cheese"]],
        dailySchedule = {};
    
    meals.forEach(function (k, i) {
        this[k] = ingredients[i];
    }, dailySchedule);        
    
    console.log(dailySchedule);
    .as-console-wrapper { max-height: 100% !important; top: 0; }

    【讨论】:

      【解决方案3】:

      我能想到的另一种优雅的方式是这样的;

      var   meals = ["breakfast", "lunch", "dinner"],
      ingredients = [["eggs", "yogurt", "toast"],["falafel", "mushrooms", "fries"], ["pasta", "cheese"]],
           result = Object.assign(...meals.map((m,i) => ({[m]:ingredients[i]})));
      console.log(result);

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-11-12
        • 2014-01-26
        • 1970-01-01
        • 2021-12-24
        • 1970-01-01
        相关资源
        最近更新 更多