如何将嵌套结构的两个数组按对应位置打包为目标二维数组
嵌套数组的Zip打包解决方案
你需要将两个嵌套数组(productTitles 和 productQuantity)按订单维度,把每个订单内的标题与对应位置的数量一一配对,生成每个订单专属的 [[标题, 数量], ...] 结构。
实现方法
首先可以写一个通用的单层级数组配对函数,再结合外层遍历处理嵌套结构:
// 单层级数组zip函数:将两个同长度数组的对应元素配对 function zip(arrA, arrB) { return arrA.map((item, idx) => [item, arrB[idx]]); } // 模拟你的输入数据 const productTitles = [ ['Cukier biały premium', 'second item'], ['Cukier biały premium', 'Cukier czarny', 'Cukier amerykanski'] ]; const productQuantity = [ [1, 999], [1, 1, 1] ]; // 处理嵌套数组,生成目标结构 const mergedOrders = productTitles.map((orderTitles, orderIdx) => { // 拿到当前订单对应的数量数组 const orderQuantities = productQuantity[orderIdx]; return zip(orderTitles, orderQuantities); }); console.log(mergedOrders);
如果不想单独定义zip函数,也可以直接把逻辑内联,代码更紧凑:
const mergedOrders = productTitles.map((titles, i) => titles.map((title, j) => [title, productQuantity[i][j]]) );
关于你之前得到[undefined, undefined]的原因
大概率是在map回调里没有明确返回值,或者访问数组元素时索引越界。比如如果productTitles和productQuantity的子数组长度不匹配,或者外层遍历的时候没正确拿到对应的数量数组,都可能导致返回undefined。
内容的提问来源于stack exchange,提问作者xxxbud
相关产品推荐
相关产品推荐

