Javascript 将二维数组转换为不重复的对象数组

Javascript 将二维数组转换为不重复的对象数组,javascript,arrays,object,Javascript,Arrays,Object,我有一个二维颜色数组: var colors = [["Blue", "Red"],["Green","Red"],["Black","Orange"],["Red", "Blue"]] 我想把它转换成一个对象数组,我已经用.map成功地做到了这一点 obj = colors.map(function(x) {return { "color1": x[0], "color2": x[1] }}); 但是,我希望新的对象数组排除重复项,只是一个提到的颜色列表(而不是

我有一个二维颜色数组:

var colors = [["Blue", "Red"],["Green","Red"],["Black","Orange"],["Red", "Blue"]]
我想把它转换成一个对象数组,我已经用.map成功地做到了这一点

obj = colors.map(function(x) {return
{    
    "color1": x[0],
    "color2": x[1]  
}});
但是,我希望新的对象数组排除重复项,只是一个提到的颜色列表(而不是color1和color2,组合成一个)。新数组的格式应为:

[{"color": Blue},
 {"color": Red},
 {"color": Green},
 {"color": Black},
 {"color": Orange}]
如何实现这一点?

使用纯javascript

var colors = [["Blue", "Red"],["Green","Red"],["Black","Orange"],["Red", "Blue"]]

var map = {};
var result = [];
colors.forEach(
    function (pair) {
      pair.forEach(
          function (color) {
            if (!map.hasOwnProperty(color)) {
              result.push(color);
            }
            map[color] = 1;
          })
    }
);

console.log(result);
这在以后的javascript版本中更容易实现。例如,您可以使用类型来消除重复

使用漂亮的实用程序库更容易。例如:

_(colors).flatten().uniq().value();
我们可以使用数组和方法来实现这一点

演示

//初始多维数组。
变量颜色=[
[“蓝色”、“红色”],
[“绿色”、“红色”],
[“黑色”、“橙色”],
[“红色”、“蓝色”]
];
//将颜色合并到一维数组中。
var merged=[].concat.apply([],颜色);
//应用array filter()方法删除重复项。
var filteredData=merged.filter(函数(项,索引){
返回合并后的索引(项)=索引
});
//从数组“filteredData”创建对象数组。
var res=filteredData.map(函数(项){
返回{
“颜色”:项目
}
});
//结果
控制台日志(res)您可以使用js从阵列中删除重复实例。
var colors=[“蓝色”、“红色”]、[“绿色”、“红色”]、[“黑色”、“橙色”]、[“红色”、“蓝色”];
//合并数组
var merged=[].concat.apply([],颜色);
//删除重复项
var removeDuplicates=Array.from(新集合(合并));
//创建对象的数组
var o=removeDuplicates.map(函数(obj){
返回{“color”:obj};
});

控制台日志(o)你知道你在使用哪个版本的Javascript吗?