gpt4 book ai didi

javascript - forEach 与扩展运算符返回未定义

转载 作者:行者123 更新时间:2023-12-01 01:17:32 26 4
gpt4 key购买 nike

我有一个这种类型的对象数组:

[{id: "somethin%g", apple: "dfgdf efd"}, ...]

我想替换 key = id 值中的一些特殊字符,而不更改对象的任何其他内容。

所以上面的例子,一定是:

[{id: "something", apple: "dfgdf efd"}, ...]

我尝试这个功能:

function removeSpecialCharacters(metadata) {
const result = metadata.forEach(datum => {
const cleanId = datum.id.replace(/[.|&;$%@%"<>+]/g, '')
return { ...datum, id: cleanId }
})
console.log(result)
return result
}

我得到结果=未定义。为什么?

最佳答案

您必须将 forEach 替换为 mapforEach 不返回数组。它只是运行循环的内容并丢弃结果。而 map 将创建第二个数组并用映射的内容填充它。

function removeSpecialCharacters(metadata) {
const result = metadata.map(datum => {
const cleanId = datum.id.replace(/[.|&;$%@%"<>+]/g, '')
return { ...datum, id: cleanId }
})
return result
}

const data = [{id: "somethin%g", apple: "dfgdf efd"}];
console.log(removeSpecialCharacters(data));

这是一种更简短的方法:

function removeSpecialCharacters(metadata) {
return metadata.map(datum =>
({ ...datum, id: datum.id.replace(/[.|&;$%@%"<>+]/g, '') })
)
}

const data = [{id: "somethin%g", apple: "dfgdf efd"}];
console.log(removeSpecialCharacters(data));

请参阅doc on mapforEach在 MDN 上。

关于javascript - forEach 与扩展运算符返回未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54604853/

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