如何在jQuery中将两个数组合并为一个数组?合并代码遇空数组问题排查
解决数组合并后输出为空的问题
嘿,我来帮你捋捋这个问题——你现在的核心问题是没有正确把合并后的数组赋值给result_temp,而且当前的合并逻辑也没达到你想要的[3,5,6,9]效果,咱们一步步解决:
问题出在哪?
先看你的代码:
var a = dt_temp; var b = ab_temp; result_temp.push.apply(a,b); console.log(result_temp);
这里的push.apply(a,b)其实是把b的元素追加到a(也就是原dt_temp数组)里,而result_temp从始至终都是空数组,所以控制台输出空是理所当然的。另外,这种写法还会修改原dt_temp数组,不是创建新数组的最优解。
满足你需求的正确实现
根据你想要的[3,5,6,9]结果(也就是ab_temp的第一个元素 + dt_temp全部元素 + ab_temp的第二个元素),给你几种简单易懂的写法:
方法1:ES6数组展开语法(推荐)
这种写法最直观,可读性拉满:
const dt_temp = [5,6]; const ab_temp = [3,9]; const result_temp = [ab_temp[0], ...dt_temp, ab_temp[1]]; console.log(result_temp); // 输出 [3,5,6,9]
方法2:concat方法(兼容旧环境)
如果需要支持ES6之前的老环境,可以用concat来拼接:
var dt_temp = [5,6]; var ab_temp = [3,9]; var result_temp = [ab_temp[0]].concat(dt_temp, [ab_temp[1]]); console.log(result_temp); // 输出 [3,5,6,9]
补充:如果只是普通合并(不拆分ab_temp)
要是之后你需要的是常规的数组合并(比如[5,6,3,9]或者[3,9,5,6]),直接这么写就行:
// dt_temp在前,ab_temp在后 const result_temp = [...dt_temp, ...ab_temp]; // 或者ab_temp在前,dt_temp在后 const result_temp = [...ab_temp, ...dt_temp];
要是非要用push.apply的话?
如果你坚持想用push.apply的方式,正确的写法得先把result_temp初始化为dt_temp的副本,再追加元素,但这样得到的是[5,6,3,9],不符合你要的结果,不过还是给你参考下:
var dt_temp = [5,6]; var ab_temp = [3,9]; var result_temp = [...dt_temp]; // 先复制dt_temp到新数组 result_temp.push.apply(result_temp, ab_temp); // 把ab_temp的元素追加进去 console.log(result_temp); // 输出 [5,6,3,9]
内容的提问来源于stack exchange,提问作者nonutt
相关产品推荐
相关产品推荐

