//优化前的
// var ary = [1, 2, 3, 2, 3, 2, 3, 1, 2, 3];
// var obj = {};
// for (var i = 0; i < ary.length; i++) {
// var cur = ary[i];
// if (obj[cur] == cur) {
// ary.splice(i, 1);
// //"数组塌陷":使用splice删除当前项,后面每一项的索引都会往前提一位,我们删除后如果在i++,这样的话会空开一位比较不了
// i--;
// continue;
// }
// obj[cur] = cur;
// }
// obj = null;
// console.log(ary);
//splice删除当前项后,后面每一项的索引都会重新的计算,如果后面有一百万项,是非常的消耗性能的->不能使用splice但是也可以把当前项删除掉?
//只把最后一项的值替换当前项,然后在把最后一项删除
//ary[ary.length-1] ->最后一项的值 ary.length-1是最后一项的索引
//ary.length--; ->删除最后一项
var ary = [1, 2, 3, 3, 3, 2, 3, 1, 2];
var obj = {};
for (var i = 0; i < ary.length; i++) {
var cur = ary[i];
if (obj[cur] == cur) {
// ary[i] = ary[ary.length - 1];
// var temp=ary[i];
// ary[i] = ary[ary.length - 1];
// var temp=ary[i];
// ary[ary.length - 1]=temp;
// ary[ary.length - 1]=temp=ary[i];
//
// ary.length--;
// i--;
// continue;
// }
// obj[cur] = cur;
// }
// obj = null;
// console.log(ary);
1210

被折叠的 条评论
为什么被折叠?



