以低于JSON格式从服务器获取数据
{
"Data": [
{
"Id": "1",
"Number": 0,
"Modify": {
"Id": 0,
"Name": "a"
}
},
{
"Id": "2",
"Number": 1,
"Modify": {
"Id": 1,
"Name": "b"
}
}
]}
我正在尝试在同一个对象中创建修改的新副本(重命名),因为我的其他数据期望JSON具有相同的格式但名称不同以进行修改。
所以,虽然我会预先制作并创建相同的副本,如下所示
{
"Data": [
{
"Id": "1",
"Number": 0,
"Modify": {
"Id": 0,
"Name": "a"
},"New": {
"Id": 0,
"Name": "a"
}
},
{
"Id": "2",
"Number": 1,
"Modify": {
"Id": 1,
"Name": "b"
},
"New": {
"Id": 1,
"Name": "b"
}
}
]}
有没有更好的方法我可以重命名对象或我应该创建一个副本。什么是更好的复制方式?
由于
答案 0 :(得分:0)
for循环是一种很好的方法.. data[i].Name = data[i].Modify;
。我相当肯定在Javascript中没有比这更好的方法。
答案 1 :(得分:0)
除了@MjrKusanagi建议的方式之外别无他法,但我建议采用另一种方法。
创建一个获取原始对象并用新名称替换所选键的函数,返回一个新对象而不更改原始对象(不变性)
该函数可以有3个参数:
function modifyObject(object, oldKey, newKey) {...}
在函数内部,您可以使用Object.assign
方法创建原始对象的副本(副本,而不是引用):
var newObj = Object.assign({}, object);
之后,您可以通过创建新密钥来更改密钥名称,并且不要忘记从新对象中删除旧密钥:
newObj.newKey = newObj.oldKey;
delete newObj.oldKey,
最后,您可以返回此新对象,甚至在每次需要执行类似操作时都使用此功能。
使用delete
被认为是不好的做法,但至少在这里您不会改变原始来源,因此您可以在其所有应用程序的生命周期中依赖其内容。