我的数据元素包含:
{"records":[{"id":2463534,"token":"135","name":"MNC Rental","number":"0"},{"id":2463535,"token":"132","name":"ZNC Rental","number":"0"}]}
这是我的代码:
var editableArray = [];
var object = { i: 0, id: 0, number: "" };
for(let i = 0 ; i < data.records.length ; i++) {
object.i = i;
object.id = data.records[i].id;
object.number = data.records[i].number;
console.log("object: " + JSON.stringify(object));
editableArray.push(JSON.stringify(object));
}
console.log("array: " + JSON.stringify(editableArray));
输出:
object: {"i":0,"id":2463534,"number":"0"}
object: {"i":1,"id":2463535,"number":"0"}
array: ["{\"i\":0,\"id\":2463534,\"number\":\"0\"}","{\"i\":1,\"id\":2463535,\"number\":\"0\"}"]
所以数组中有很多反斜杠,我不知道为什么。有人有办法避免这些反斜杠吗?
如果我删除push命令中的JSON.stringify,那么它只添加最后一个对象2次,这就是结果:
array: [{"i":1,"id":2463535,"number":"0"},{"i":1,"id":2463535,"number":"0"}]
您总是将同一个对象推入数组,然后修改它。每次都需要创建一个新对象:
for(let i = 0 ; i < data.records.length ; i++) {
// moved inside to create a new object instead of modifying the existing one
var object = { i: 0, id: 0, number: "" };
object.i = i;
object.id = data.records[i].id;
object.number = data.records[i].number;
console.log("object: " + JSON.stringify(object));
editableArray.push(JSON.stringify(object));
}
console.log("array: " + JSON.stringify(editableArray));
@Jensv 答案完全正确,只是想添加我的解决方案。
它基本上做同样的事情,只是稍微不那么冗长。
const data = {"records":[{"id":2463534,"token":"135","name":"MNC Rental","number":"0"},{"id":2463535,"token":"132","name":"ZNC Rental","number":"0"}]}
const editableArray = data.records.map(({ id, number }, i) => ({ i, id, number: String(number) }));
console.log("array: " + JSON.stringify(editableArray));