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...