微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决每 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;
     
},[]);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。