You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
function unique(arr) {
if (isValid(arr)) {
const len = arr.length;
for (let i = 0; i < len; i += 1) {
for (let j = 0; j < len; j += 1) {
if (arr[i] === arr[j]) {
// 第一个等同于第二个,splice方法删除第二个
arr.splice(j, 1);
}
}
}
}
return [];
}
2-2、for循环+Array.indexOf
function unique1(arr) {
const newArr = [];
const len = arr.length;
if (isValid(arr)) {
for (let i = 0; i < len; i += 1) {
const element = arr[i];
const index = newArr.indexOf(element);
if (index === -1) {
newArr.push(element);
}
}
}
return newArr;
}
2-3、for循环+Array.sort
// sort 利用sort()排序方法,然后根据排序后的结果进行遍历及相邻元素比对。
function unique(arr) {
let newArr = [];
let srcArr = arr;
if (isValid(arr)) {
srcArr = arr.sort();
newArr = [srcArr[0]];
const len = srcArr.length;
for (let i = 1; i < len; i += 1) {
const ele = arr[i];
if (ele !== arr[i + 1]) {
newArr.push(ele);
}
}
}
return newArr;
}
// console.log('sort:', unique(arr)); // [ 0, 0, 1, 15, 'NaN', NaN, NaN, {}, {}, 'a', false, null, true, 'true' ]
明显缺点是改变了原数组的顺序
2-4、for循环+Array.includes
与indexOf思路相同
function unique3(params) {
const newArr = [];
const len = arr.length;
if (isValid(arr)) {
for (let i = 0; i < len; i += 1) {
const element = arr[i];
if (!newArr.includes(element)) {
newArr.push(element);
}
}
}
return newArr;
}
Uh oh!
There was an error while loading. Please reload this page.
JavaScript编码能力
来源:https://segmentfault.com/a/1190000016418021
测试数组:
去重
1、利用ES6 Set去重(ES6中最常用)
不考虑兼容性,这种去重的方法代码最少。
这种方法认为NaN等于自身,而===认为NaN不等于自身
lodash中的_.uniq结果与此相同
2、通过for循环+数组相关方法(ES5中最常用)
2-1、双重for循环+Array.splice
2-2、for循环+Array.indexOf
2-3、for循环+Array.sort
明显缺点是改变了原数组的顺序
2-4、for循环+Array.includes
与indexOf思路相同
使用场景:search输入联想限制请求次数
防抖函数:https://github.com/ShadowWalker627/JavascriptBlog/blob/master/utils/debounce.js
防抖实现:https://codepen.io/ShadowWalker627/pen/EzZZJO
!!!这篇老文章把防抖说成了节流:浅谈javascript的函数节流
The text was updated successfully, but these errors were encountered: