Javascript 如何更改JSON.stringify值?

Javascript 如何更改JSON.stringify值?,javascript,reactjs,Javascript,Reactjs,我使用以下代码将json结构化值附加到状态变量: var value = JSON.stringify({"id":event.target.name,"amount":event.target.value}) this.setState({temp:[...this.state.temp, value]},function () { console.log(this.state.temp); }); 我得到的结果是: [“{”id:“1”,“amount:“10”}”,“{”id

我使用以下代码将json结构化值附加到状态变量:

var value = JSON.stringify({"id":event.target.name,"amount":event.target.value})

this.setState({temp:[...this.state.temp, value]},function () {
    console.log(this.state.temp);
}); 
我得到的结果是:

[“{”id:“1”,“amount:“10”}”,“{”id:“2”,“amount:“20”}]

我如何将其重组为以下内容:

[{“id”:“1”,“amount”:“10”},{“id”:“2”,“amount”:“20”}]

更新:当我像这样删除JSON.stringify时
var value={“id”:event.target.name,“amount”:event.target.value}
我得到的结果是空数组

这是因为您正在对值(对象)使用
stringify
,该值将返回一个字符串,然后将该字符串推送到状态数组中

避免将字符串化并直接推送该对象

像这样:

var value = {"id": event.target.name, "amount": event.target.value};

this.setState(
    prevState => ({ temp: [...prevState.temp, value] }), 
    () => { console.log(this.state.temp);}
);
建议:


使用
updater函数
而不是在
setState
方法中使用
this.state

这是因为您正在对值(对象)使用
stringify
,该值将返回一个字符串,然后将该字符串推送到状态数组中

避免将字符串化并直接推送该对象

像这样:

var value = {"id": event.target.name, "amount": event.target.value};

this.setState(
    prevState => ({ temp: [...prevState.temp, value] }), 
    () => { console.log(this.state.temp);}
);
建议:


使用
updater函数
而不是在
setState
方法中使用
this.state

试试这个,不需要使用JSON.stringify

var value = {"id":event.target.name,"amount":event.target.value}
    this.setState({temp:[...this.state.temp, value]},function () {
         console.log(this.state.temp);
    }); 

试试这个,不需要使用JSON.stringify

var value = {"id":event.target.name,"amount":event.target.value}
    this.setState({temp:[...this.state.temp, value]},function () {
         console.log(this.state.temp);
    }); 

stringify从JS对象创建一个字符串。这就是为什么数组中的所有对象都用引号括起来

试试这个

var value = {"id":event.target.name,"amount":event.target.value};

this.setState({temp:[...this.state.temp, value]},function () {
  console.log(this.state.temp);
});

stringify从JS对象创建一个字符串。这就是为什么数组中的所有对象都用引号括起来

试试这个

var value = {"id":event.target.name,"amount":event.target.value};

this.setState({temp:[...this.state.temp, value]},function () {
  console.log(this.state.temp);
});
选项1:删除

var value = JSON.stringify({"id":event.target.name,"amount":event.target.value});
备选案文2: 使用:

选项1:删除

var value = JSON.stringify({"id":event.target.name,"amount":event.target.value});
备选案文2: 使用:


移除
JSON.stringify(…)
不序列化JS对象移除
JSON.stringify(…)
不序列化JS对象object@Mayank这将提供一个空数组作为结果。temp的初始值是什么?此外,您正在使用与我粘贴在代码段中相同的
?temp的初始值为null它应该是
[]
,据我所知,如果初始值为null,它应该会抛出错误,请检查控制台您是否收到任何错误?我在状态初始化中给出了as
temp:[]
,且不为null。我刚才说的空数组是
[]
@Mayank,结果是空数组temp的初始值是什么?此外,您正在使用与我粘贴在代码段中相同的
?temp的初始值为null它应该是
[]
,据我所知,如果初始值为null,它应该会抛出错误,请检查控制台您是否收到任何错误?我在状态初始化中给出了as
temp:[]
,且不为null。我的意思是将空数组设置为
[]
,这将按照@mayank的建议,将空数组设置为resultplz change temp=[]。这就是问题所在。根据@mayank的建议,这将提供一个空数组作为resultplz change temp=[]。这就是问题所在。