改变对象的值
2020-12-28
529
我有此对象
Object {
"Info": "/mall/Id",
"Logo": "/mall/Id/Logo",
"Photo": "/mall/Id/photo",
}
我不知道该对象的键,因此我怎样才能将值“/mall/Id”更改为“/mall/1”
.replace('Id', Id);
我知道我可以使用 Object.values 进行迭代,但当我这样做时,我得到了相同的响应
ARRAY.map(El =>
{
Object.values(El).map(El =>
{
return(
El = El.replace('Id', this.props.Id)
)
})
});
2个回答
使用
Object.keys()
迭代 JSON 键并替换字符串。
const input = {
"Info": "/mall/Id",
"Logo": "/mall/Id/Logo",
"Photo": "/mall/Id/photo",
}
Object.keys(input).forEach(key => {
input[key] = input[key].replace('Id', this.props.Id);
});
console.log(input)
wangdev87
2020-12-28
您可以使用负向前瞻正则表达式模式来匹配请求 URL 中的所需值(带有前面的正斜杠)。
例如
/\/(?!/)Id/
const requestFromTemplate = (template, key, value) =>
(exp => Object.entries(template).reduce((acc, [k, v]) => ({
...acc,
[k]: v.replace(exp, value)
}), {}))
(new RegExp(`(?!/)${key}`));
const mallTemplate = {
"Info": "/mall/Id",
"Logo": "/mall/Id/Logo",
"Photo": "/mall/Id/photo",
};
const firstMall = requestFromTemplate(mallTemplate, 'Id', 1);
console.log(firstMall);
.as-console-wrapper { top: 0; max-height: 100% !important; }
Mr. Polywhirl
2020-12-28