Я пытаюсь добиться того, чтобы взять первые 23 значения массива (чтобы он стал массив B ), который содержит 92 значения ( массив A ), и поместить эти 23 значения в свой собственный массив. Но он должен буквально принимать первые 23 значения, поэтому в Массив A останется 69 значений. Тогда я могу принять еще 23 значения и, кроме них, в свой собственный массив (массив C) и так далее ...

Для небольшого примера:

Возьмите 3 значения из массива A

[ 320,
  272,
  412,
  36,
  36,
  36,
  31,
  30,
  30,
  387,
  338,
  511]

Стать... Массив B

[ 320,
272,
412]

Массив A с 9 значениями

[36,
  36,
  36,
  31,
  30,
  30,
  387,
  338,
  511]

Я пробовал lodash _.take, но он буквально не берет значения из массива, поскольку оставляет его в массиве.

-3
Callum Brankin 29 Авг 2017 в 18:48

5 ответов

Лучший ответ

Вы можете использовать Array.splice ()

let a = [ 320,
  272,
  412,
  36,
  36,
  36,
  31,
  30,
  30,
  387,
  338,
  511];
  
  let b = a.splice(0, 3);
  console.log(b);
  console.log(a);
2
marvel308 29 Авг 2017 в 15:53

Если вы используете lodash, вы можете использовать _.remove:

var A = [1, 2, 3, 4, 5, 6];
var B = _.remove(A, function(value, index, array) {
  return index < 3;
});    
console.log(B);
console.log(A);
<script src="https://cdn.jsdelivr.net/lodash/4.17.4/lodash.min.js"></script>
0
Blorgbeard is out 29 Авг 2017 в 16:03

Метод 1 - с использованием метода сращивания -

 let array1 = [ 320,
  272,
  412,
  36,
  36,
  36,
  31,
  30,
  30,
  387,
  338,
  511];

    var array2 = array1.splice(0, a.indexOf(412));

Чтобы удалить «412» из массива 2:

array2.shift();

Method 2-

Using Lo-dash
For Example-
var array = [1,2,3,4,5,6];
var p1 = _.first(ar, 4); 
var p2 = _.rest(ar, 4);

Метод 3 - используйте сращивание, как указано выше

x = [1,2,3,4,5,6];
y = x.splice(3);
console.log(x); // [1,2,3]
console.log(y.shift()); // [4,5,6]
0
cse_vikashgupta 29 Авг 2017 в 16:12

Ну вот :

var arrayB = arrayA.slice(1, 24);
arrayA = arrayA.slice(24, 93);
0
OddBrew 29 Авг 2017 в 15:58

Зачем уничтожать исходный массив? Это будет, вероятно, довольно медленно. Вы можете превратить ваш массив в 2d:

var arr = Array(500).fill(230);//whatever input
var result = [], chunk = 23;
for(var i = 0; i < arr.length - chunk +1; i+= chunk)
  result.push( arr.slice(i, i + chunk) );

Итак, результат выглядит так:

[
[...23],
[...23]
...
]

Взять первые 23 сделать

result[0]

...и так далее.

0
Jonas Wilms 29 Авг 2017 в 17:05