2017-08-29 333 views
-3

我想要实现的是取数组中的前23个值(成为数组B),其中包含92个值(数组A)并将这23个值放入它们自己的数组中。但它必须从字面上采取前23个值,所以阵列A将剩下69个值。那么我就能把另外23个值以及它们却到自己的数组(数组C)等等...如何获取数组中的第一个数值?

对于一个小规模的例子:

取3个值从数组

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

成为... 数组b

[ 320, 
272, 
412] 

阵列中的9个值

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

我试过lodash _.take但它没有字面上采取值从数组,因为它留下它在数组中。

+0

看来你已经知道如何创建数组B.现在你只需要从数组A中删除前n个值。这应该很容易googleable。 – JJJ

+0

你看过任何数组函数吗?如果没有看看https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/prototype – Nope

+0

Array.splice是你正在寻找的。 – tilz0R

回答

2

你,如果你正在使用lodash可以使用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);

0

,您可以使用_.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

这里你去:

var arrayB = arrayA.slice(1, 24); 
arrayA = arrayA.slice(24, 93); 
0

为什么要销毁原始数组?这可能会相当缓慢。 YPU可以把你的阵列为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

方法1-用拼接方法 -

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

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

要从数组2删除 '412':

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] 
相关问题