合并/展平多维数组并删除重复的Javascript
Merge/flatten multidimensional array and remove duplicates Javascript
我有一个多维数组,如下所示:
var workouts = [
[0, Object, 0, 0, 0],
[Object, 0, 0, 0, 0],
[0, 0, 0, Object, 0]
];
我想展平/合并数组并删除重复项。结果应该是这样的:
[Object, Object, 0, Object, 0]
有可能表演吗?
我的理解是,如果第一个遇到的对象存在,则希望将其保留在给定的列中。
您可以使用.map()
和.reduce()
:
var workouts = [
[0, {id:1}, 0, 0, 0],
[{id:2}, 0, 0, 0, 0],
[0, 0, 0, {id:3}, 0]
];
var res = workouts.reduce(function(a, b) {
return b.map(function(e, i) { return a[i] instanceof Object ? a[i] : e; });
}, []);
console.log(JSON.stringify(res));
派对迟到了,但我仍然想利用:
- CCD_ 3用于将尺寸减小到1
- 用于删除重复数据的
Set
Spread Syntax
用于从该集合中获取数组- CCD_ 6和解析返回以处理对象的重复
以下是代码和一个非常鼓舞人心的帖子1和2:
const myArray = [
[0, {id:1}, 0, 0, 0],
[{id:2}, 0, 0, 0, 0],
[0, 0, 0, {id:2}, 0]
]
const myFlatArray = myArray.flat()
const result = [...new Set(myFlatArray.map(JSON.stringify))].map(JSON.parse)
console.log(JSON.stringify(result))
注意:此解决方案必须支持ES6
var workouts = [
[0, {id:1}, 0, 0, 0],
[{id:2}, 0, 0, 0, 0],
[0, 0, 0, {id:3}, 0]
];
function flattenArray (array){
var newArray = [];
for (i=0; i<array.length; i++){
var subArray = array[i];
for (ii=0; ii<subArray.length; ii++){
if (newArray.indexOf(subArray[ii]) == -1){
newArray.push(subArray[ii]);
}
}
}
return newArray;
}
console.log(flattenArray(workouts));
http://codepen.io/anon/pen/WxLrqL
我愿意这样做;
var workouts = [[0, {a:1}, 0, 0, 0],
[{b:2}, 0, 0, 0, 0],
[0, 0, 0, {c:3}, 0]
],
result = workouts.reduce((p,c) => p = c.map((e,i) => e || p[i] || 0 ),[])
console.log(result);
相关文章:
- 删除javascript中的大Blob
- 删除javascript中包含特定单词的行
- 可以clearTimeout删除JavaScript中已触发超时事件的未处理回调
- 如何删除javascript中的不透明度
- 如何筛选要写入新文档的HTML,删除JavaScript中的某些类和/或ID
- 如何删除JavaScript画布呈现上下文的状态堆栈
- 将数组中的重复项转换为唯一项,而不删除Javascript中的任何项
- 从 DOM 中删除/删除 Javascript 用户定义的数组
- 如何删除 JavaScript 对象中具有相同键的所有元素
- 使用替换函数删除 Javascript 中元素的类
- 使用 MVC 删除 JavaScript 中硬编码字符串 Asp.Net 最佳方法
- 如何删除 javascript 中某些字符之前的所有逗号
- 删除 JavaScript 中的全角和半角字符
- 滑动以删除JavaScript
- 只删除javascript中的1个动态元素
- 如何删除Javascript对象属性
- 如何删除javascript数组中的空白元素
- 删除Javascript中小数后的数字
- 删除javascript中的decimal
- 从ASP.NET MVC部分视图中卸载/删除javascript函数