nodejs分离数组

时间:2018-07-13 13:08:41

标签: javascript arrays node.js loops

我得到了一个数组,它是通过如下方式进行网络抓取的结果:

interface WhereEq {
  type: 'eq';
  value: string | number;
}

interface WhereIn {
  type: 'in';
  value: number[];
}

type Where = WhereEq | WhereIn; // obviously the union type won't work

const test: Where = {
  type: 'eq',
  value: [13] // it should throw error on trying to do that
}

我必须将此数据插入MySQL。事实是,数组的每10行是MySQL表的一行。

所以我必须将第1行连接到第10行-将第11行连接到第20行,依此类推。

我试图创建一个新的数组,其键每次重复10次,如下所示:

array:
[
  'line1',
  'line2',
  'line3',
  'linen'..
]

但是那不是我期望的结果。

如何实现?

  • 更新

让我们说这是我收到的数组(或对象idk):

arrayFinal.push({
    key: counter,
    value: array[i]
});

没有可标识哪个字段的非键。我只是将“ id”之类的字段放入,以便您可以理解。 现在,我必须分离此数组以插入到mysql中。您每4行看到一个图案,对不对?

array: 
[
    'id',
    'name',
    'age',
    'address',
    'id',
    'name',
    'age',
    'address'
]

3 个答案:

答案 0 :(得分:2)

如果您要将输入array转换为array的{​​{1}},其中每个objects将容纳每个连续的{object,{{1} },idname)的组合,您可以使用age且步长等于address来读取单个for loop中的每个4个元素。 / p>

这应该是您的代码:

4

演示:

这是一个有效的演示:

object

答案 1 :(得分:1)

您需要将Array分成10的大块,然后像这样使用它们:

const list = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30];

//Separate your Array into chunks of 10
let newArray = new Array(Math.ceil(list.length / 10)).fill().map((_,i) => list.slice(i*10,i*10+10));

//Go through your chunks
for(let chunk of newArray){
  //Do whatever you want with them
  console.log('insert into mysql (id, name, age, address, ...) values '+chunk.join(','));
}

在变量newArray中,现在有一个由10个长度的数组组成的数组。
有关更多信息,请参见Split array into chunks

此后,您要做的就是遍历此数组并使用String创建新的Array#join

答案 2 :(得分:0)

仅当我猜到您在寻找正确的内容时,下面是代码:

let arrayFinal = [];
for (var i =0; i < array.length; i+10) {
  end = i + 10;
  end = array.length > end ? end : array.length;
  arrayFinal.push(array.slice(i, end));
}