在打字稿中,我有一个像变量1这样的数组对象,我想将name
值的子字符串从地址键替换为new_name
,将address
替换为new_address
。我该怎么做?我有类似的东西
const variable2 = [
variable1.map((object) => {
object.address.replace('name', 'new_name');
object.address.replace('address', 'new_address');
}),
];
但出现错误TS2339: Property 'address' does not exist on type 'void[]'.
export const variable1 = [
{name: 'apple', address: `name=apple&address=apple_address}`, },
{name: 'banana', address: `name=banana&address=banana_address}`, },
];
// vairable2
// export const variable1 = [
// {name: 'apple', address: `new_name=apple&new_address=apple_address}`, },
// {name: 'banana', address: `new_name=banana&new_address=banana_address}`, },] ;
问题是您没有将值重新分配给object.address
,.replace()
不会覆盖实际的字符串,它只是返回新值。那就是你想要的:
const variable2 = [
variable1.map((object) => {
object.address = object.address.replace('name', 'new_name')
.replace('address', 'new_address');
}),
];
如果您要替换的全部,则不需要map()方法。您可以使用forEach()。此代码将替换数组中的所有项目。
variable1.forEach((object) => {
object.address = object.address.replace('name', 'new_name')
.replace('address', 'new_address');
});