如何将一维数组通过unshift插入到二维数组的每个子数组头部?
解决将一维数组元素插入二维数组每个子数组开头的问题
你当前的代码存在一个问题:unshift(ar1)会把整个ar1数组当作单个元素插入到子数组开头,最终得到的子数组会嵌套另一个数组,和预期结果不符。要实现把ar1的每个元素依次插入到ar2子数组的开头,你可以用以下两种方式修改代码:
方法1:使用ES6扩展运算符(推荐)
扩展运算符...可以把数组的元素逐个展开,作为多个参数传给unshift方法,正好符合需求:
let ar1 = [4, "Purchase Order", "Yoga"]; let ar2 = [ ["221123-B", 1, "006"], ["221123-C", 1, "006"], ["221123-D", 1, "006"], ["221123-E", 1, "006"] ] ar2.forEach(subArr => { subArr.unshift(...ar1); }); console.log(JSON.stringify(ar2));
方法2:兼容旧环境的apply写法
如果需要兼容不支持ES6的环境,可以用apply方法,它会把第二个参数的数组元素拆解成参数列表传入目标函数:
ar2.forEach(subArr => { Array.prototype.unshift.apply(subArr, ar1); });
两种方法运行后,都会得到你预期的结果:
[ [4, "Purchase Order", "Yoga", "221123-B", 1, "006"], [4, "Purchase Order", "Yoga", "221123-C", 1, "006"], [4, "Purchase Order", "Yoga", "221123-D", 1, "006"], [4, "Purchase Order", "Yoga", "221123-E", 1, "006"] ]
内容的提问来源于stack exchange,提问作者onit
相关产品推荐
相关产品推荐

