Javascript 如何更改JSON.stringify值?
我使用以下代码将json结构化值附加到状态变量: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
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,它应该会抛出错误,请检查控制台您是否收到任何错误?我在状态初始化中给出了astemp:[]
,且不为null。我刚才说的空数组是[]
@Mayank,结果是空数组temp的初始值是什么?此外,您正在使用与我粘贴在代码段中相同的值
?temp的初始值为null它应该是[]
,据我所知,如果初始值为null,它应该会抛出错误,请检查控制台您是否收到任何错误?我在状态初始化中给出了astemp:[]
,且不为null。我的意思是将空数组设置为[]
,这将按照@mayank的建议,将空数组设置为resultplz change temp=[]。这就是问题所在。根据@mayank的建议,这将提供一个空数组作为resultplz change temp=[]。这就是问题所在。