add list.insert
This commit is contained in:
parent
7da437212d
commit
49a6320fef
|
|
@ -73,6 +73,13 @@ export const list = {
|
|||
const realItems = items.map(item => item.value)
|
||||
return toValue(realList.splice(realStart, realDeleteCount, ...realItems))
|
||||
},
|
||||
insert: (list: Value, index: Value, item: Value) => {
|
||||
if (list.type !== 'array') return toNull()
|
||||
const realList = list.value as any[]
|
||||
const realIndex = index.value as number
|
||||
realList.splice(realIndex, 0, item)
|
||||
return toValue(realList.length)
|
||||
},
|
||||
|
||||
// sequence operations
|
||||
reverse: (list: any[]) => list.slice().reverse(),
|
||||
|
|
@ -143,3 +150,4 @@ export const list = {
|
|||
; (list.pop as any).raw = true
|
||||
; (list.shift as any).raw = true
|
||||
; (list.unshift as any).raw = true
|
||||
; (list.insert as any).raw = true
|
||||
|
|
@ -349,6 +349,22 @@ describe('collections', () => {
|
|||
await expect(`arr = [1 2 3 4 5]; list.splice arr 3 2; arr`).toEvaluateTo([1, 2, 3])
|
||||
})
|
||||
|
||||
test('list.insert adds element at index and mutates array', async () => {
|
||||
await expect(`arr = [1 2 4 5]; list.insert arr 2 3; arr`).toEvaluateTo([1, 2, 3, 4, 5])
|
||||
})
|
||||
|
||||
test('list.insert returns array length', async () => {
|
||||
await expect(`list.insert [1 2 4] 2 3`).toEvaluateTo(4)
|
||||
})
|
||||
|
||||
test('list.insert at start', async () => {
|
||||
await expect(`arr = [2 3]; list.insert arr 0 1; arr`).toEvaluateTo([1, 2, 3])
|
||||
})
|
||||
|
||||
test('list.insert at end', async () => {
|
||||
await expect(`arr = [1 2]; list.insert arr 2 99; arr`).toEvaluateTo([1, 2, 99])
|
||||
})
|
||||
|
||||
test('list.sort with no callback sorts ascending', async () => {
|
||||
await expect(`list.sort [3 1 4 1 5] null`).toEvaluateTo([1, 1, 3, 4, 5])
|
||||
})
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user