使用 Array.prototype.map() 更改数组中对象的 属性
Use Array.prototype.map() to change property of an object in an array
我为一个项目工作,我无法解决以下问题...
目标是翻译“resourceKeys”属性并按字母顺序对它们进行排序。
为此,对象数组中的每个 属性 都必须单独翻译。
代码:
const self = this;
self._translateService.onLangChange.subscribe(() => {
self.absenceTypes = self.absenceTypes.map((x) => self._translateService.instant(x.resourceKey));
self.absenceTypes.sort((a, b) => a.resourceKey.localeCompare(b.resourceKey));
console.log(self.absenceTypes);
})
来源:
export const absenceTypes: ISelectItem[] = [
{ key: AbsenceType.Sickness, resourceKey: "AbsenceTypeSickness" },
{ key: AbsenceType.ParentalLeave, resourceKey: "AbsenceTypeParentalLeave" },
{ key: AbsenceType.ChildCare, resourceKey: "AbsenceTypeChildCare" },
{ key: AbsenceType.Vacation, resourceKey: "AbsenceTypeVacation" },
{ key: AbsenceType.LeaveOfAbsence, resourceKey: "AbsenceTypeLeaveOfAbsence" },
{ key: AbsenceType.UnpaidVacation, resourceKey: "AbsenceTypeUnpaidVacation" }
]
我希望控制台显示如下内容:
{ key: AbsenceType.Sickness, resourceKey: Sickness }
而不是从 map((x) => self._translateService.instant(x.resourceKey));
我只从控制台得到:0: Sickness
。
有没有一种方法可以在更改(翻译)resourceKey 的同时保留对象的密钥?
使用扩展 (...
) 运算符用更新的 resourceKey
:
补充原始对象
map((x) => ({
...x,
resourceKey: self._translateService.instant(x.resourceKey))
}));
我为一个项目工作,我无法解决以下问题...
目标是翻译“resourceKeys”属性并按字母顺序对它们进行排序。
为此,对象数组中的每个 属性 都必须单独翻译。
代码:
const self = this;
self._translateService.onLangChange.subscribe(() => {
self.absenceTypes = self.absenceTypes.map((x) => self._translateService.instant(x.resourceKey));
self.absenceTypes.sort((a, b) => a.resourceKey.localeCompare(b.resourceKey));
console.log(self.absenceTypes);
})
来源:
export const absenceTypes: ISelectItem[] = [
{ key: AbsenceType.Sickness, resourceKey: "AbsenceTypeSickness" },
{ key: AbsenceType.ParentalLeave, resourceKey: "AbsenceTypeParentalLeave" },
{ key: AbsenceType.ChildCare, resourceKey: "AbsenceTypeChildCare" },
{ key: AbsenceType.Vacation, resourceKey: "AbsenceTypeVacation" },
{ key: AbsenceType.LeaveOfAbsence, resourceKey: "AbsenceTypeLeaveOfAbsence" },
{ key: AbsenceType.UnpaidVacation, resourceKey: "AbsenceTypeUnpaidVacation" }
]
我希望控制台显示如下内容:
{ key: AbsenceType.Sickness, resourceKey: Sickness }
而不是从 map((x) => self._translateService.instant(x.resourceKey));
我只从控制台得到:0: Sickness
。
有没有一种方法可以在更改(翻译)resourceKey 的同时保留对象的密钥?
使用扩展 (...
) 运算符用更新的 resourceKey
:
map((x) => ({
...x,
resourceKey: self._translateService.instant(x.resourceKey))
}));