javascript - 如何从javascript中的数组中删除对象?
问题描述
我有两个数组totalArray
,并且selectionArray
这些值总是动态的,但例如我在该数组下面给出的目的,现在我想selectionArray
从totalArray
使用 id 而不是索引中删除,因为我每页只有五个值。因此,如果我使用索引删除值,那么它也会从其他页面中删除值,因为页面索引是相同的。那么如何使用 id 删除对象呢?我使用拼接,但正在使用其他方法或任何其他可用的解决方案?
totalArray = [
{id: 1, city: 'LONDON'},
{id: 2, city: 'PARIS'},
{id: 3, city: 'NEW YORK'},
{id: 4, city: 'BERLIN'},
{id: 5, city: 'MADRID'},
{id: 6, city: 'ROME'},
{id: 7, city: 'DUBLIN'},
{id: 8, city: 'ATHENS'},
{id: 9, city: 'ANKARA'},
{id: 10, city: 'MOSCOW'},
]
selectionArray = [
{id: 6, city: 'ROME'},
{id: 7, city: 'DUBLIN'},
{id: 8, city: 'ATHENS'},
{id: 9, city: 'ANKARA'},
{id: 10, city: 'MOSCOW'},
]
selectionArray.forEach((item, i) => {
totalArray.splice(item.id, 1);
});
解决方案
假设您要更改原始数组,以下是遵循此方法的解决方案:
- 获取
id
循环项 selectionArray 的 ,利用array.forEach
. - 在整个数组中查找与循环元素具有相同索引的元素。
- 获取其索引,并拼接数组中的元素。
这应该与您尝试使用代码实现的目标非常相似,我已尝试尽可能接近您的尝试。
const totalArray = [
{id: 1, city: 'LONDON'},
{id: 2, city: 'PARIS'},
{id: 3, city: 'NEW YORK'},
{id: 4, city: 'BERLIN'},
{id: 5, city: 'MADRID'},
{id: 6, city: 'ROME'},
{id: 7, city: 'DUBLIN'},
{id: 8, city: 'ATHENS'},
{id: 9, city: 'ANKARA'},
{id: 10, city: 'MOSCOW'},
],
selectionArray = [
{id: 6, city: 'ROME'},
{id: 7, city: 'DUBLIN'},
{id: 8, city: 'ATHENS'},
{id: 9, city: 'ANKARA'},
{id: 10, city: 'MOSCOW'},
];
selectionArray.forEach(({id: uid}) => {
totalArray.splice(
totalArray.indexOf(totalArray.find(({id}) => uid === id)),
1
);
});
console.log(totalArray);
请注意,如果两个数组元素来自同一个数组源,您可以简单地使用indexOf
.
推荐阅读
- javascript - 用嵌套数据反应选择
- node.js - JestJS.io:TypeError [ERR_INVALID_FILE_URL_PATH]:文件 URL 路径必须是绝对的
- python - How to filter out numbers from a string if it matches the template?
- sql - 当您将表格与公共列组合时重叠日期逻辑 - 领先或滞后
- python - Pytorch 打印导入模型中发生的情况(临时矩阵)
- flask - 为什么所有注册用户都是 AnonymousUserMixin?
- python - 如何嵌套“for循环”n次?
- php - 从ajax发送数据时在php中获取未定义的索引
- elasticsearch - 相关数据的弹性查询
- kotlin - OSGi 应用程序子系统处于活动状态,但其组件不是