insertAfter
在数组中指定元素之后插入新数据
⚠️ 破坏性变更:从 v0.20.0 起,insertItemsAfterTarget(v0.15.0) 更名为 insertAfter,原函数已废弃
引入版本
0.20.0
Demo
ts
import { insertAfter } from '@wyfex/iutils'
const data = [
{ id: 1, name: '张三' },
{ id: 2, name: '李四' },
{ id: 3, name: '王五' }
]
/**
* ================== 1. 单个插入 通过 id ==================
*/
const r1 = insertAfter(data, { id: 2 }, { id: 4, name: '赵六' })
console.log(JSON.stringify(r1, null, 2))
// [
// {
// "id": 1,
// "name": "张三"
// },
// {
// "id": 2,
// "name": "李四"
// },
// {
// "id": 4,
// "name": "赵六"
// },
// {
// "id": 3,
// "name": "王五"
// }
// ]
/**
* ================== 2. 批量插入 通过 name ==================
*/
const r2 = insertAfter(data, { name: '张三' }, [
{ id: 11, name: '子1' },
{ id: 12, name: '子2' }
])
console.log(JSON.stringify(r2, null, 2))
// [
// {
// "id": 1,
// "name": "张三"
// },
// {
// "id": 11,
// "name": "子1"
// },
// {
// "id": 12,
// "name": "子2"
// },
// {
// "id": 2,
// "name": "李四"
// },
// {
// "id": 3,
// "name": "王五"
// }
// ]
/**
* ================== 3. 边界:空数组 ==================
*/
const r3 = insertAfter([], { id: 1 }, { id: 2 })
console.log(r3) // []
/**
* ================== 4. 边界:target 不存在 ==================
*/
const r4 = insertAfter(data, { id: 999 }, { id: 6 })
console.log(JSON.stringify(r4, null, 2))
// [
// {
// "id": 1,
// "name": "张三"
// },
// {
// "id": 2,
// "name": "李四"
// },
// {
// "id": 3,
// "name": "王五"
// }
// ]
/**
* ================== 5. 异常:target 为空对象 ==================
*/
const r5 = insertAfter(data, {}, { id: 7 })
console.log(JSON.stringify(r5, null, 2))
// [
// {
// "id": 1,
// "name": "张三"
// },
// {
// "id": 2,
// "name": "李四"
// },
// {
// "id": 3,
// "name": "王五"
// }
// ]
/**
* ================== 6. 异常:target value 为 undefined ==================
*/
const r6 = insertAfter(data, { id: undefined }, { id: 8 })
console.log(JSON.stringify(r6, null, 2))
// [
// {
// "id": 1,
// "name": "张三"
// },
// {
// "id": 2,
// "name": "李四"
// },
// {
// "id": 3,
// "name": "王五"
// }
// ]