У меня есть JSON-объект в этом формате.
[
{
"name": "schoolname",
"line id": "0",
"time": "4-5",
"minage": "15",
"maxage": "35"
},
{
"name": "studentname1",
"line id": "1",
"class": "A"
},
{
"name": "studentname2",
"line id": "2",
"class": "B"
}
]
Что я хочу сделать
Из набора указанных заголовков получите его из "line id" : "0"
и установите его в другие элементы.
Например:
headers = ["time", "minage", "maxage"]
Я получаю их от "line id" : "0"
и передаю их другим.
[
{
"name": "schoolname",
"line id": "0",
"time": "4-5",
"minage": "15",
"maxage": "35"
},
{
"name": "studentname1",
"line id": "1",
"class": "A",
"time": "4-5",
"minage": "15",
"maxage": "35"
},
{
"name": "studentname2",
"line id": "2",
"class": "B",
"time": "4-5",
"minage": "15",
"maxage": "35"
}
]
а затем удалите элемент с помощью "line id" : "0"
, например:
[
{
"name": "studentname1",
"line id": "1",
"class": "A",
"time": "4-5",
"minage": "15",
"maxage": "35"
},
{
"name": "studentname2",
"line id": "2",
"class": "B",
"time": "4-5",
"minage": "15",
"maxage": "35"
}
]
Говорят, что 1-й элемент будет "line id" : "0"
.
Что я пробовал:
var headers = ["time", "minage", "maxage"]
var data =
[
{
"name": "schoolname",
"line id": "0",
"time": "4-5",
"minage": "15",
"maxage": "35"
},
{
"name": "studentname1",
"line id": "1",
"class": "A"
},
{
"name": "studentname2",
"line id": "2",
"class": "B"
}
];
for(var i = 1; i < data.length; i++)//iterate over the data leaving the 1st line
{
for(var j = 0; j < headers.length; j++)//add each header to the data lines
{
data[i][headers[j]] = data[0][headers[j]];
}
}
data.splice(0,1);
Все работает отлично и по назначению. Есть ли способ уменьшить временную сложность этого и сделать его более эффективным.
Теперь это имеет временную сложность O (n * m).
Есть ли способ добавить эти несколько объектов ко всем элементам? Поскольку пары ключевых значений, которые должны быть добавлены для всех записей, остаются неизменными.