比如说一个数组:
let arr = [
{id: 1, name: 'a'},
{id: 2, name: 'b'},
{id: 3, name: 'c'},
...
]
如果不考虑有重复项的话,如何快速的找到指定id的那一项,并移除?
想知道比较高效的方法有哪些,谢谢!
比如说一个数组:
let arr = [
{id: 1, name: 'a'},
{id: 2, name: 'b'},
{id: 3, name: 'c'},
...
]
如果不考虑有重复项的话,如何快速的找到指定id的那一项,并移除?
想知道比较高效的方法有哪些,谢谢!
let arr = [
{id: 1, name: 'a'},
{id: 2, name: 'b'},
{id: 3, name: 'c'},
]
let arr2 = arr.filter(item => item.id !== 1)
现有的数据看起来,arr[i-1]
的id
就等于i
,所以直接删除arr[i-1]
应该就可以了,数据在多了可以考虑二分查找,或者把arr转换成一个object,属性名为id的值,属性值为name的值,就像是
arr2 = {"1": "1", "2": "b", ...}
我试了下这个方法,
arr.splice(arr.findIndex((item) => {return item.id == 10}), 1);
为啥我测耗时 结果却是这样....
写法很多种 比如 说找到 id=2这步entries(),keys()和values()遍历
arr.find((n) => n.id == 2)
arr.findIndex()
至于删除这一步,其实要从第一步实现的策略上来看,比如我第一步是获取索引,那还是要有删除这一步,或者第一步我是建立新数组,把id!=2的 获取出来。
当然还有别的思路,比如改变存储结构 假设id 不重复 数组成 map形式的,key是 id 这样做的好处优点也是显而易见的,
至于说那种方法好,很难说,需要从 时间 空间,业务具体需要 来看。
13 回答13.1k 阅读
7 回答2.3k 阅读
3 回答1.4k 阅读✓ 已解决
6 回答1.5k 阅读✓ 已解决
2 回答1.5k 阅读✓ 已解决
3 回答1.5k 阅读✓ 已解决
2 回答1.2k 阅读✓ 已解决
const arr2 = arr.filter(item=>item.id!==2);
