我得到了一个数组,它是通过如下方式进行网络抓取的结果:
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'
]
答案 0 :(得分:2)
如果您要将输入array
转换为array
的{{1}},其中每个objects
将容纳每个连续的{object
,{{1} },id
和name
)的组合,您可以使用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));
}