Объект разбить на части.
Подскажите пожалуйсто:
есть объект из объектов 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, время: 16:54. |