12.01.2018, 03:15
|
Аспирант
|
|
Регистрация: 06.03.2017
Сообщений: 37
|
|
Объект разбить на части.
Подскажите пожалуйсто:
есть объект из объектов 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 шт
},
Спасибо! )
|
|
12.01.2018, 08:41
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,228
|
|
Сообщение от Dark Souls
|
Как его разбить на части по 20 шт:
|
Из, приведенного тобой, "примера" не понятно как ты собрался все это бить на части...
Но, как вариант, строку можно преобразовать в объект или массив JS, а потом циклом выбрать нужные части в некий массив или объект.
После такого "разбиения" результат опять преобразовать в JSON-строку...
|
|
12.01.2018, 08:45
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от Dark Souls
|
есть объект из объектов JSON
|
JSON это не объект. А откуда эти данные?
|
|
12.01.2018, 10:01
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,126
|
|
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>
|
|
12.01.2018, 12:15
|
Профессор
|
|
Регистрация: 27.11.2015
Сообщений: 2,899
|
|
Такой вид ключей так и напрашивается на то, чтобы сделать двумерный массив объектов.
Разбивка по 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, 12.01.2018 в 12:18.
|
|
12.01.2018, 20:20
|
Аспирант
|
|
Регистрация: 06.03.2017
Сообщений: 37
|
|
Dilettante_Pro, шикарная мысль!
Спасибо всем!
Попробую скрипт Рони прикрутить. (если пойму как он работает)
|
|
12.01.2018, 20:47
|
Аспирант
|
|
Регистрация: 06.03.2017
Сообщений: 37
|
|
Может кому-то пригодиться.
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;
}, []);
}
Спасибо еще раз! )
|
|
13.01.2018, 02:06
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Dark Souls,
если эта затея ради вывода, то зачем же разбивать предварительно, если деление по модулю поможет это в самом процессе вывода.
|
|
|
|