js陣列相關

2022-07-01 18:51:07 字數 3240 閱讀 9619

const  = require("request");

/**

* 陣列迴圈:foreach / map / for of

*///

foreach適用於只是進行集合或陣列遍歷,for則在較複雜的迴圈中效率更高。

//foreach不能對陣列或集合進行修改(新增刪除操作),如果想要修改就要用for迴圈

//foreach就是for迴圈的簡化沒有返回值 map有返回值,可以運算元組

var myarray = [1, {}, ]

myarray.foreach((e, i) =>

else

if( e.constructor ===array )

})console.log(myarray)

//[1, , [3]]

var newmaplist = myarray.map((e) =>

if('b' in e)

}if(array.isarray(e))

returne})

console.log(newmaplist)

//[1, , [3, 5]]

//for of 迴圈 可以使用break跳出迴圈

for(let n of myarray)/**

* 陣列判斷 findindex / find / some / includes / every */

var filist =[,,]

//some() 方法用於檢測陣列中的元素是否滿足指定條件

filist.some(e => ) //

true

//findindex() 判斷陣列中物件是否存在值

filist.findindex((e) => ) //2//

find() 方法返回通過測試(函式內判斷)的陣列的第乙個元素的值

//當陣列中的元素在測試條件時返回 true 時, find() 返回符合條件的元素,之後的值不會再呼叫執行函式。

//如果沒有符合條件的元素返回 undefined

filist.find((e) => ) //

//includes() 找到匹配則返回 true,否則返回 false / 也可用於檢測字串(區分大小寫)

[1,2,3,4].includes(2) //

true

'wangwu'.includes('wu') //

true

.includes() //

false 不能檢測物件

//every() 方法用於檢測陣列所有元素是否都符合指定條件。

//every() 方法使用指定函式檢測陣列中的所有元素:

//如果陣列中檢測到有乙個元素不滿足,則整個表示式返回 false ,且剩餘的元素不會再進行檢測。

//如果所有元素都滿足條件,則返回 true。

var ages = [32, 16, 40];

.every(e => e === true) //

true // 注意: every() 不會對空陣列進行檢測。空陣列檢測返回 true。

ages.every((ele,index) => ele > 18) //

false

ages.every((ele,index) => ele > 15) //

true/**

* 陣列過濾 filter */

[1,2,3,5].filter(e => e > 2) //

[3, 5]/**

*///陣列累加 reduce():從陣列的第一項開始,逐個遍歷到最後

var values = [1,2,3];

var sum = values.reduce(function

(prev, cur, index, array));

//求陣列中所有值的和

console.log(sum) //6//

計算陣列中最大值

var maxlist = [1,2,3,4,5]

, maxlist)

方法,支援傳遞多個引數,比如:math.max(1,4,2,3,7,5,6)

//但是它不支援直接傳遞乙個陣列作為引數,比如:math.max(new array(1,4,2,3,7,5,6))。/**

* 陣列結構 */

//陣列中的物件排序

var arrobjsort =

},_overduesort(property)

},_sort(),,,]

overduelist.sort(

this._overduesort('num'))

console.log(overduelist)

}}arrobjsort._sort()

//按照首字母排序

let retn = ['bas', 'd', 'c', 'k', 'a', 'z']

retn.sort((a, b) =>)

console.log(retn)

/** 單層陣列生成樹狀結構

*/let account_subject_list =[

,,,,,,,

]function

gettree(list)

const arr =

list.foreach(item =>)

list.foreach(item =>

else

})return

arr}

const tree =gettree(account_subject_list)

console.log('tree',tree)/**

* 樹狀結構鋪平 */

function

flat(tree) );

expanded(e.children);})}

};expanded(tree);

return

arr;

}const flattree =flat(tree)

console.log("鋪平===", flattree)/**

* 深拷貝 */

和json.parse()即可搞定。但是這種簡單粗暴的方法有其侷限性。當值為undefined、function、symbol 會在轉換過程中被忽略

//自定義深拷貝

function

deepcopy(obj) ;

for (var key in

obj) else}}

return

result;

}

JS陣列相關

1.push js陣列插入 改變原有陣列 var a 1,2,3 var b a.push 4 5 console.log a 1,2,3,4,5 console.log b 52.pop 返回陣列最後乙個元素 改變原有陣列 var a 1,2,3 var b a.pop console.log a...

js陣列相關

var arr a,b,c 如果要定義乙個二維陣列,要用for迴圈來定義 var arr newarray for var i 0 i 2 i 優化版的for迴圈遍歷 for j 0,len arr.length j len j foreach遍歷 jsonobj.foreach function ...

js陣列相關操作

hash關聯陣列定義 定義空陣列 myhash 直接定義陣列 myhash 用array 定義陣列 myhash new array myhash key1 val1 myhash key2 val2 向hash關聯陣列新增鍵值 新增乙個新鍵 newkey 鍵值為 newval myhash new...