javascript - 将数组格式化为新数组

标签 javascript jquery json underscore.js

我有一个对象数组。我想重新格式化为新数组,但不知道如何开始。我有 jQuery 和 Underscore 可用。

这是我的原始数组:

var myArray = [
  {
    "name": "Product",
    "value": "Car"
  },
  {
    "name": "Product",
    "value": "Boat"
  },
  {
    "name": "Product",
    "value": "Truck"
  },
  {
    "name": "Color",
    "value": "Blue"
  },
  {
    "name": "Location",
    "value": "Store"
  }
];

这是我试图使新数组看起来像这样:

var newArray = [
  {
    "name": "Product",
    "value": "Car Boat Truck"
  },
  {
    "name": "Color",
    "value": "Blue"
  },
  {
    "name": "Location",
    "value": "Store"
  }
];

在 newArray 中,产品都在一个对象中。

最佳答案

您可以使用groupBy方法将所有同名元素放在一起,然后 map将它们转变成你想要的。和pluck在这里组合输出数组中的值很有用。

这是快速、简单的解决方案:

var newArray = _.chain(myArray)
                .groupBy("name")
                .map(function(a) { 
                    return { 
                        "name": a[0].name, 
                        "value":  _.pluck(a, "value").join(" ")
                    };
                })
                .value();

Demonstration

为了完整起见,这里是非链接版本:

var newArray = _.map(_.groupBy(myArray, "name"), function(a) { 
                    return { 
                        "name": a[0].name, 
                        "value":  _.pluck(a, "value").join(" ")
                    };
                });

关于javascript - 将数组格式化为新数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22947522/

相关文章:

javascript - 在 JavaScript 跨浏览器中将字符串(UTF-8)编码为二进制数据

javascript - 如何识别onbeforeunload是点击关闭按钮引起的

javascript - 使用淡入淡出更改背景图像

javascript - 将 JSON 内容加载到 meteor 模板中

javascript - 使用javascript将json转换为树结构,客户端

javascript - 右括号前空行的 eslint 规则

jquery - Owl Carousel - 为同一页面上放置的多个 slider 中的每个 slider 设置不同的项目编号

Javascript 函数中的clearInterval

python - 如何从 pyspark 数据帧创建 JSON 结构?

ios - 有没有办法从这个晦涩的对象中获取属性并将其转换为 JSON?