js更加簡潔的小技巧(陣列去重,物件解構)

2021-08-30 13:27:43 字數 2085 閱讀 1434

1、清空或截斷陣列

在不重新給陣列賦值的情況下,清空或截斷陣列的最簡單方法是更改​​其 length 屬性值:

const arr = [1, 2, 3, 4, 5];

// 截斷

arr.length = 3;

console.log(arr); // [1, 2, 3]

// 清除

arr.length = 0;

console.log(arr); //

console.log(arr[2]); // undefined

2、使用物件解構模擬命名引數

當需要將一組可選變數傳遞給某個引數時,很可能已經在使用配置物件:

dosomething();

function dosomething(config)

這是乙個比較老但有效的模式,它試圖在js中模擬命名引數。函式呼叫看起來很好,另一方面配置物件處理邏輯不必要地冗長。使用物件解構可以繞過這個缺點:

function dosomething()
3、使用物件解構來處理陣列

可以使用物件解構將陣列項分配給各個變數:

const fmper = '1990, john doe, us, [email protected], new york';

const = fmper.split(',');

4、使用async/await來await多個async函式

await promise.all([anasynccall(), thisisalsoasync(), onemore()]);
5、建立純(pure)物件

const pureobject = object.create(null);

console.log(pureobject); // {}

console.log(pureobject.constructor); // undefined

console.log(pureobject.tostring); // undefined

console.log(pureobject.hasownproperty); // undefined

6、格式化json**

json.stringify 不僅可以簡單的將物件轉化為字串,還可以用它來格式化json輸出。

const obj = }};

// 第三個引數代表空格間距

json.stringify(obj, null, 2);

// // }

// }

7、陣列去重

通過使用集合語法和spread展開運算子,輕鬆刪除陣列重複項:

const arran = arr => [...new set(arr)];

arran([1, 2, 3, 2, 'foo', 'al', 'foo', true, false, true]); // [1, 2, 3, "foo", "al", true, false]

8、平鋪多維陣列

const arrone = [1, 2, [1, 3], 2, [2, 4]];

const flatarr = .concat(...arrone); // [1, 2, 1, 3, 2, 2, 4]

可惜上面的方法只適用於二維陣列,通過遞迴可以平鋪任意維度的陣列:

function flattenarray(arr) 

const arr1 = [1, [2, 3], [4, [5, 6, [7, 8]]], 9];

const arr2 = flattenarray(arr1); // [1, 2, 3, 4, 5, 6, 7, 8, 9]

js 陣列去重小技巧

今天遇到乙個問題,需要對資料進行去重,想看一下有沒有什麼比較方便的方法,果然有些收穫。問題描述 我有乙個這樣的資料 要實現根據 projectid 去重,應該得到下面的結果 先從乙個簡單的問題入手,將乙個陣列去重 1,2,3,3,4 通常,我們一般都是這樣去做的,將要用於去重的資料放在乙個 集合 中...

js陣列去重的方法

array.from方法可以將set結構轉為陣列 let items new set 1,2,3,4,5 let array array.from items 這就是提供了一種資料去重的方法 function uniq array uniq 1,2,3,3 1,2,3 運用擴充套件運算子 提供了一種...

js陣列去重的方法

最簡單的方法一 vararr 1,2 3,1 原陣列 vararr2 新陣列 for vari 0 ilength i console.log arr2 最簡單的方法二 當你很任性不想用array.indexof item 時 vararr 1 a a b d e e 1 0 15 1 15 var...