gpt4 book ai didi

angular - map() 内部的拼接函数只删除数组的一半

转载 作者:搜寻专家 更新时间:2023-10-30 22:05:45 24 4
gpt4 key购买 nike

我有一个包含 146 个对象的数组(目前)和一个随路由器一起提供的 ID。如果 object.id 不等于 id,我想删除对象。我为此写了一个函数,但它只适用于数组的一半。在我添加这些拼接之前,此功能运行良好。我的代码;

getFullData(){
var fullData = [OBJECTS].sort(function(a,b){if(a.date<b.date)return 1; if(a.date > b.date) return -1})} //sorting

fullData.map(val=>{
Object.assign(val, {dataType:this.getDateType(val.date)}); //this line not about these problem
if (val.device !== this.id) {
fullData.splice(fullData.indexOf(val), 1);
}
});
return fullData;
}

目前对象上的所有 id 都是相同的。当我用路由器路由不同的 id 时,它必须删除所有这些但只删除 73 个对象。

最佳答案

你正在循环你正在拼接的同一个数组,最好在映射之前使用一个过滤器:

fullData = fullData
.filter((val) => val.device !== this.id)
.map((val) => {...val, dataType: this.getDateType(val.date) });

如果性能是一个问题,并且你不想循环两次,你可以在过滤器内完成:

fullData = fullData
.filter((val) => {
if (val.device !== this.id) {
return false;
}

val.dataType = this.getDateType(val.date);

return true;
})

关于angular - map() 内部的拼接函数只删除数组的一半,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53956418/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com