之前java開(kāi)發(fā)安卓APP的時(shí)候辛臊,感覺(jué)其中的ArrayList的API比較好用的。
就想能否用js封裝一個(gè)類(lèi)似的類(lèi),更好的進(jìn)行數(shù)組操作呢孵延。
因?yàn)榍岸私?jīng)常后端返回的列表數(shù)組進(jìn)行增刪改查亂序文黎,排序等操作背镇,如果能有一個(gè)封裝的類(lèi)來(lái)代替
預(yù)期是相對(duì)原生的API的操作還是能提高點(diǎn)效率的。
例如:左滑操作顯示刪除某個(gè)元素 原生:list.splice(index,1)再此之前還要獲取到index.有時(shí)候index不一定準(zhǔn)確丰刊。而用了該ArrayList后可以:mList.remove(index)或者mList.remove(item)移除整個(gè)對(duì)象隘谣。
排序/打亂順序:原生:list.sort(...)其實(shí)排列demo級(jí)別如純數(shù)字?jǐn)?shù)組[1,2,3,7,23,6]這樣的還行。但是如果是對(duì)數(shù)組對(duì)象進(jìn)行排序,如果有超過(guò)10項(xiàng)寻歧,速度就很明顯慢下來(lái)掌栅;所以ins-array-list針對(duì)此進(jìn)行了優(yōu)化,內(nèi)部使用希爾排序來(lái)做排序和亂序码泛,經(jīng)測(cè)試執(zhí)行速度很快:mList.sort(...);mList.shuffle();
簡(jiǎn)單介紹
主要涉及以下API猾封,用到方法重載,數(shù)組越界等邊界報(bào)錯(cuò)處理
npm package:ins-array-list
simple array list implementation in javascript like java
$ npm install ins-array-list --save
const ArrayList=require('ins-array-list')
const testList = [
{
id: 1,
name: 'Alicy',
gender: 2
},
{
id: 2,
name: 'Anna',
gender: 2
},
{
id: 3,
name: 'Tom',
gender: 1
}
]
let mList = new ArrayList(testList, 'id')//id為對(duì)象的主鍵噪珊,任何一個(gè)API操作涉及對(duì)象的重復(fù)晌缘,添加或刪除等操作等確認(rèn)動(dòng)作都會(huì)用到這個(gè)id.
//例如繼續(xù)添加id=1的數(shù)據(jù)會(huì)報(bào)錯(cuò)
//以下用add簡(jiǎn)單介紹下api
mList.add({id:1,name:'Steve',gender:1})//=>throw error mList.size==3
mList.add({id:4,name:'Steve',gender:1})//=>true mList.size()==4
mList.add(1,{id:5,name:'Miya',gender:2})//=>true 在index=1添加id=5的對(duì)象
//更多api 偽代碼
mList.addAll(subList)
mList.addAll(index,subList)
mList.remove(index)
mList.remove(item)
mList.removeIf(predicator)
mList.subList(formIndex,toEndIndex)
mList.sort()
mList.shuffle()
mList.iterate(iterator)
mList.contains(item)
mList.isEmpty()
mList.clear()
mList.get(index)
mList.set(index,item)
mList.size()
//特別說(shuō)明
mList.source屬性可能獲取到最新的對(duì)象數(shù)組
具體使用可以看npm
或者Github里的README enjoy!