在不丢弃其余键的情况下更改对象的键值
Posted
技术标签:
【中文标题】在不丢弃其余键的情况下更改对象的键值【英文标题】:Changing key value of object without discarding rest of keys 【发布时间】:2019-12-16 04:38:51 【问题描述】:我想用下划线替换所有传入对象中特定键的空格。它可以工作,但是其余的键消失了。
对象:
"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"]
【问题讨论】:
【参考方案1】:由于 ES6 箭头函数的隐式返回,您正在返回 result.name.replace(...)
- 修改后返回 result
。解构在这里很有用,就像传播一样:
.map(( name, ...r ) => ( ...r, name: name.replace(/ /g, "_")));
另一种方式:
.map(result =>
result.name = result.name.replace(/ /g, "_");
return result;
);
【讨论】:
【参考方案2】:您还需要在 map 方法中返回其他属性,以及修改后的name
属性。
const filteredResults = jsonResults
.filter(result => result.name)
.map(
result =>
return
...result,
name: result.name.replace(' ', '_')
)
【讨论】:
【参考方案3】:您正在返回 map
函数中的名称:
result => result.name.replace(' ', '_')
宁可这样做:
result => result.name = result.name.replace(' ', '_'); return result;
【讨论】:
以上是关于在不丢弃其余键的情况下更改对象的键值的主要内容,如果未能解决你的问题,请参考以下文章
如何在不影响未分阶段更改的情况下丢弃 git 中的分阶段更改 [重复]
如何在不干扰 iOS 中键值对序列的情况下读写 json 文件?