#javascript #arrays #lodash
#javascript #массивы #lodash
Вопрос:
Я получил countries.json
, что я разбиваю на 4 столбца для отображения в соответствии со спецификацией.
Я рассматриваю решение, в котором элементы массива равномерно распределены по всем четырем массивам.
Пример JSFIDDLE https://jsfiddle.net/5tkjLs7b /
Если я удалю одну страну из данных json, в итоге у меня будет 6 массивов. Но ожидается, что будет только 4 массива.
Также данные должны быть равномерно распределены.
Пример: я получаю 63 элемента * 4 массива 3 элемента * 1 массив для полного country.json.
var countries = [
{"name": "Afghanistan", "code": "AF"},
{"name": "Åland Islands", "code": "AX"},
{"name": "Albania", "code": "AL"},
{"name": "Algeria", "code": "DZ"},
{"name": "American Samoa", "code": "AS"},
{"name": "AndorrA", "code": "AD"},
{"name": "Angola", "code": "AO"},
{"name": "Anguilla", "code": "AI"},
{"name": "Antarctica", "code": "AQ"},
{"name": "Antigua and Barbuda", "code": "AG"},
{"name": "Argentina", "code": "AR"},
{"name": "Armenia", "code": "AM"}];
chunkedCountries = _.chunk(countries, countries.length/4)
console.log(chunkedCountries);
Ответ №1:
Вы можете использовать for
цикл и slice()
получить желаемый результат.
var countries = [
{"name": "Afghanistan", "code": "AF"},
{"name": "Åland Islands", "code": "AX"},
{"name": "Albania", "code": "AL"},
{"name": "Algeria", "code": "DZ"},
{"name": "American Samoa", "code": "AS"},
{"name": "AndorrA", "code": "AD"},
{"name": "Angola", "code": "AO"},
{"name": "Anguilla", "code": "AI"},
{"name": "Antarctica", "code": "AQ"},
{"name": "Antigua and Barbuda", "code": "AG"},
{"name": "Argentina", "code": "AR"},
{"name": "Armenia", "code": "AM"}];
var c = countries.length / 4;
var result = [];
for(var i = 0; i < countries.length; i =c) {
result.push(countries.slice(i, i c));
}
console.log(result)