开发者问题收集

改变对象的值

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