每 4 个索引后连接数组的数组

问题描述

我有这种格式的数据

[["hi,hello,"bye"],["hi,"bye"]] 

并且我想将 4 个索引连接到新数组,以便新数组成为

[["hi,"bye","hi,"bye"]]

我正在尝试使用此代码但不知道该怎么做

const table = document.querySelectorAll('table[class=ProductInventory]')[1];
    const data = [];
    const finalData =[]

    for (var i = 1; i < table.rows.length; i++) {
        var tableRow = table.rows[i];
        var rowData = [];
        for (var j = 0; j < tableRow.cells.length; j++) {
            rowData.push(tableRow.cells[j].innerText);
        }
        data.push(rowData);
    } 
   let counter = 1
    for (var a = 0; a <= data.length / 4; a++) {
            const obj = []
            counter++
            if(counter == 4){
                obj.concat(data[a-3],data[a - 2],data[a - 1]);
                counter = 0
            }
            
            finalData.push(obj)
        }

解决方法

您可以将 Array.fromArray#slice 一起使用。

const arr = [["hi","hello","bye"],["hi",'hello',"bye"]];
const size = 4;
const res = Array.from({length: Math.ceil(arr.length / size)},(_,i)=>arr.slice(i * size,(i + 1) * size).flat());
console.log(res);

,

您可以使用 JavaScript Array reduce() 方法

const data = [["hi","bye"]];
const finalData = data.reduce((finalVal,currenctVal,currenctIndex) => {
    let index = Math.floor(currenctIndex / 4);
    if(!finalVal[index]) {
       finalVal[index] = [];
    }
    finalVal[index] = finalVal[index].concat(currenctVal);
    return finalVal;
     
},[]);