Angular map()内部的拼接函数只删除数组的一半
我现在有一个包含146个对象的数组和一个路由器附带的id。 如果object.id不等于id,我想删除对象。 我为此编写了一个函数,但它只适用于数组的一半。在我添加这些拼接之前,该函数运行良好。 我的代码Angular map()内部的拼接函数只删除数组的一半,angular,typescript,Angular,Typescript,我现在有一个包含146个对象的数组和一个路由器附带的id。 如果object.id不等于id,我想删除对象。 我为此编写了一个函数,但它只适用于数组的一半。在我添加这些拼接之前,该函数运行良好。 我的代码 现在,对象上的所有id都是相同的。当我用路由器路由不同的id时,它必须删除所有id,但只删除73个对象。如果你正在拼接相同的数组,最好在映射之前使用过滤器: fullData = fullData .filter((val) => val.device !== this.id)
现在,对象上的所有id都是相同的。当我用路由器路由不同的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;
})
如果正在循环正在拼接的相同阵列,最好在映射之前使用过滤器:
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;
})
在映射中使用过滤器而不是拼接
var newFullData = fullData.filter(val=> val.device === yourId)
//newFullData array will contain only those values of fullData where object with device value equals to yourId
阅读更多关于在地图中使用过滤器而不是拼接的信息
var newFullData = fullData.filter(val=> val.device === yourId)
//newFullData array will contain only those values of fullData where object with device value equals to yourId
阅读更多关于的信息,请提供https://stackblitz.comcan 请提供https://stackblitz.com