js 操作整理

2021-10-22 23:50:20 字數 2017 閱讀 5215

一、利用 splice 方法刪除陣列元素

var arr =[1

,2,3

,3,4

];for(

var i =

0; i < arr.length; i++)}

->[1

,2,3

,4]// 只刪除了第乙個 3

splice 方法在刪除陣列元素後會將元素向前重排,i = 2 時刪除第乙個 3,元素向前排,第二個 3 的下標為 2,而下個循壞時 i = 3,因此會漏掉第二個 3。

解決辦法

1. 刪除元素後下標前置,跟元素重排的動作保持一致,這樣 i 和元素還能對應起來:

var arr =[1

,2,3

,3,4

];for(

var i =

0; i < arr.length; i++)}

->[1

,2,4

]

2. 從後往前刪,後面處理過的元素雖然下標不對應了,但前面未處理的元素還是對應的:

var arr =[1

,2,3

,3,4

];for(

var i = arr.length-

1; i >=

0; i--)}

->[1

,2,4

]

從前往後刪,處理過的元素下標對應,但未處理的元素下標不對應 -> 下標重排

從後往前刪,處理過的元素下標不對應,未處理的元素下標仍對應 -> ok

二、利用 delete 關鍵字刪除陣列元素

var arr =[1

,2,3

,3,4

];for(

var i =

0; i < arr.length; i++)}

->[1

,2, undefined, undefined,4]

// 有多餘的 undefined

delete 是將元素置為 undefined,可以用 filter 去除 undefined:

var arr =[1

,2,3

,3,4

];for(

var i =

0; i < arr.length; i++)}

arr.

filter

(i => i != undefined)

;// 過濾掉 undefined 元素

->[1

,2,4

]

var arr =[1

,2,3

];var brr = arr;

// 同乙個物件

var crr = arr.

concat()

;// 陣列連線,內容拷貝

var drr = arr.

slice(0

);// 陣列切片,內容拷貝

var err =

[...arr]

;// es6 擴充套件運算子,內容拷貝

crr.

tostring()

== arr.

tostring()

->

true

// 內容相同

crr === arr -

>

false

// 物件不同

// 開發打上時間戳

"my.js"

?v=time()

>

<

/sccript>

// 生產固定

"my.js"

?v=20200410

>

<

/sccript>

js時間類操作整理

date物件 常見物件方法 var d newdate 當前獲取當前時間 tue feb 09 2021 13 21 03 gmt 0800 中國標準時間 d.getfullyear 根據時間獲取 年 2021 d.getmonth 根據時間獲取 月 0 11 對應 1到12月 1 對應2月 d.g...

原生js 樣式的操作整理

function getstyle obj,attr 參考位址var getstyle function elem,style var val elem.currentstyle style if val auto style width style height else return val 呼...

原生js的dom操作 常用的整理

父節點parentnode 第乙個子節點 只會獲取到元素節點 firstelementchild 第乙個子節點 如果有文字節點將會獲取到文字節點 firstchild 最後乙個節點 只會獲取到元素節點 lastelementchild 最後乙個子節點 如果有文字節點將會獲取到文字節點 lastchi...