Объект разбить на части.
Подскажите пожалуйсто:
есть объект из объектов JSON:
"0":{
"name":"Vsya",
"lname":"Pupkin",
"email":"sd@mail.ru",
"country":"Tam"
},
"1":{
"name":"Fedya",
"lname":"Batareqkin",
"email":"ttt@mail.ru",
"country":"Tut"
},.......
И там 1275 шт. Как его разбить на части по 20 шт:
"0":{
"0":{
"name":"Vsya",
"lname":"Pupkin",
"email":"sd@mail.ru",
"country":"Tam"
}, //........ 20 шт
},
"1":{
"0":{
"name":"Vsya",
"lname":"Pupkin",
"email":"sd@mail.ru",
"country":"Tam"
}, //........ 20 шт
},
Спасибо! ) |
Цитата:
Но, как вариант, строку можно преобразовать в объект или массив JS, а потом циклом выбрать нужные части в некий массив или объект. После такого "разбиения" результат опять преобразовать в JSON-строку... |
Цитата:
|
Dark Souls,
<script>
function fn(obj, num) {
return Object.keys(obj).reduce(function(a, b, i) {
i = i / num | 0;
a[i] ? a[i][b % num] = obj[b] : a[i] = {0:obj[b]};
return a;
}, {});
}
;
var d = {}; //для примера
for (var i=0; i<50; i++) {d[i] = {"name":"Vsya"}}
document.write(JSON.stringify(fn(d, 5)))
</script>
|
Такой вид ключей так и напрашивается на то, чтобы сделать двумерный массив объектов.
Разбивка по 2
<script>
var obj = {"0":{
"name":"Vasya",
"lname":"Pupkin",
"email":"sd@mail.ru",
"country":"Tam"
},
"1":{
"name":"Fedya",
"lname":"Batareqkin",
"email":"ttt@mail.ru",
"country":"Tut"
},
"2":{
"name":"Vanya",
"lname":"Shishkin",
"email":"ss@mail.ru",
"country":"Zdes"
},
"3":{
"name":"Frosya",
"lname":"Burlakova",
"email":"fff@mail.ru",
"country":"Gdeto"
}},
arr = [],
i = 0,
j = -1;
arr[0] = [];
for (var key in obj) {
if (j < 1) { j++ } else { i++; j = 0; arr[i] = []; }
arr[i][j] = obj[key];
}
document.write(JSON.stringify(arr));
</script>
|
Dilettante_Pro, шикарная мысль!
Спасибо всем! Попробую скрипт Рони прикрутить. (если пойму как он работает) :) |
Может кому-то пригодиться.
function pgn(obj, num) {
return obj.reduce(function (a, b, i) {
if(i % num === 0) a.push({});
a[a.length-1][i] = b;
return a;
}, []);
}
Спасибо еще раз! ) |
Dark Souls,
если эта затея ради вывода, то зачем же разбивать предварительно, если деление по модулю поможет это в самом процессе вывода. |
| Часовой пояс GMT +3, время: 14:57. |