给定一个数组和一个值,在原地删除与值相同的数字,返回新数组的长度。
元素的顺序可以改变,并且对新的数组不会有影响。
给出一个数组 [0,4,4,0,0,2,4,4],和值 4
返回 4 并且 4 个元素的新数组为[0,0,0,2]
const removeElement = (arr, ele) => {};
切勿直接使用数组的length
属性,因为被删除后length
属性会减少,导致遍历提前结束,删除不彻底。
const removeElement = (arr, ele) => {
let num = arr.length; // 保存遍历的次数
for (let index = 0; index < num; index++) {
let find = arr.indexOf(ele);
if (find !== -1) {
arr.splice(find, 1); // 原地删除
} else {
return arr.length; // 找不到即退出
}
}
};
null
/undefined
,再过滤掉const removeElement = (arr, ele) => {
for (let index of arr.keys()) {
let find = arr.indexOf(ele);
if (find !== -1) {
arr[find] = null;
} else {
return arr.filter(x => x).length; // 将假值过滤掉
}
}
};
在写出上个方法之后,想到可以直接过滤掉,最简洁。但还是把另外两个方法放上来,当个思路参考一下!
const removeElement = (arr, ele) => {
return arr.filter(x => x !== ele).length; // 使用过滤将值不等于ele的直接过滤出来,返回长度
};
觉得还不错的话,给我的项目点个star吧
本文分享自 OBKoro1前端进阶积累 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!