You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 10:42:36