我正在尝试做这样的事情:1)-->take this array [1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8]2)-->this is the result [1,,2,,3,,4,,5,,6,,7,,8,,]抱歉,如果我没有展示我自己的解决方案,但实际上我真的不知道如何解决它。编辑 let arr=[]; let arr= [1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8]; arr.forEach(val=>{ let previusVal=0; if(previusVal!==val){ arr.push(val); }});console.log(arr)//wrong->x [1,2,3,4,5,6,7,8,9]
2 回答
富国沪深
TA贡献1790条经验 获得超9个赞
您可以检查前一个元素,如果不相等,则将实际值分配给结果数组的实际索引。
var array = [1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8],
result = [];
array.forEach((v, i, { [i - 1]: p }) => {
if (p !== v) result[i] = v;
});
console.log(result);
Qyouu
TA贡献1786条经验 获得超11个赞
假设空值未定义,您可以使用Set来保存第一个匹配项,使用 array.prototype.map来创建新数组。
const s = new Set();
const result = [1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8].map(i => !s.has(i) ? s.add(i) && i : undefined);
console.log(result);
添加回答
举报
0/150
提交
取消