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吗?