JavaScript разделяет и объединяет массивы по условиям - PullRequest
0 голосов
/ 20 июня 2019

У меня есть массив, подобный [a, b, c, d], и я хочу разделить его на 2 массива, например, [a, b] и [c, d], а затем объединить, чтобы получить конечный результат, например [[a, б], [с, д]].Можно ли обойтись без цикла for?

Ответы [ 5 ]

3 голосов
/ 20 июня 2019

Вы можете использовать slice и push метод, подобный этому

var arr = ['a', 'b', 'c', 'd'];
let index = 2;
let result = [];
result.push(arr.slice(0, index));
result.push(arr.slice(index))
console.log(result);
0 голосов
/ 21 июня 2019

Я нашел другое решение для этой проблемы, без написания циклов Lodash Chunk выполняет эту логику

_.chunk(['a', 'b', 'c', 'd'], 2);
// => [['a', 'b'], ['c', 'd']]

https://lodash.com/docs/

0 голосов
/ 20 июня 2019

Вам может понравиться что-то вроде этого:


a = 8;
b = { some: 'say'};
c = 'life';
d = true;

let o = {
    'a': [a, b, c, d],
    'a1': [],
    'a2': []
}
nSwitchBefore = 2;

o.a.forEach(function(item, i) {
   i < nSwitchBefore ? this.a1.push(item) : this.a2.push(item) ;
}.bind(o));

console.log(o);

Внутри функционального блока есть место для дополнительной обработки ваших элементов массива. Как фильтрация или специальная обработка определенных типов, используя все условия, которые вы хотите.

0 голосов
/ 20 июня 2019
let arr = [0, 1, 9, 10, 8];
    let arr2 = arr.slice(1,3);
    let resultArr = [];

    if(arr2[1] > 1){
    resultArr.push(99); 
    }
else{
    resultArr.push(100); 

}
    console.log(resultArr)
0 голосов
/ 20 июня 2019

да, без цикла вы можете сделать это, но вы должны знать, по какому индексу вы должны разбивать массив.

var arr = ['a', 'b', 'c', 'd'];  
var indexToSplit = arr.indexOf('c');
var first = arr.slice(0, indexToSplit);
var second = arr.slice(indexToSplit + 1);
var final = [first, second]
    console.log(final);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...