我想在所有传入对象中用下划线替换空格以表示特定键。它可以工作,但是其余的键都消失了。
对象:
{
"id": "235",
"reference": "AA",
"name": "Jake H",
},
{
"id": "668",
"reference": "TC",
"name": "Felix S",
}
实际结果:
["Jake_H", "Felix_S"]
方法:
import jsonResults from './results.json'
data() {
return {
results: [],
}
},
mounted() {
const filteredResults = jsonResults
// I have other incoming objects that do not have names.
.filter(result => result.name)
.map(
result => result.name.replace(' ', '_')
)
this.results = filteredResults
}
我希望只是键值会发生变化,但是剩下的对象将被丢弃。
期望
{
"id": "235",
"reference": "AA",
"name": "Jake_H",
}
实际
["Jake_H"]
答案 0 :(得分:4)
由于ES6箭头函数的隐式返回,您将返回result.name.replace(...)
-修改后返回result
。销毁和扩散在这里都很有用:
.map(({ name, ...r }) => ({ ...r, name: name.replace(/ /g, "_")));
备用方式:
.map(result => {
result.name = result.name.replace(/ /g, "_");
return result;
});
答案 1 :(得分:0)
您还需要在map方法中返回其他属性,以及修改后的name
属性。
const filteredResults = jsonResults
.filter(result => result.name)
.map(
result => {
return {
...result,
name: result.name.replace(' ', '_')
}
}
)
答案 2 :(得分:0)
您将返回sed
函数中的唯一名称:
map
因此,请这样做:
result => result.name.replace(' ', '_')