Javascript 使用jQuery连接两个数组;扩展;返回一个数组
我正在尝试对两个一维数组进行简单的合并,结果是一个数组的内容或另一个数组的内容,这取决于我如何使用“$.extend”。显然我做错了什么,但我看不出来 简化的例子是:Javascript 使用jQuery连接两个数组;扩展;返回一个数组,javascript,jquery,Javascript,Jquery,我正在尝试对两个一维数组进行简单的合并,结果是一个数组的内容或另一个数组的内容,这取决于我如何使用“$.extend”。显然我做错了什么,但我看不出来 简化的例子是: var array1 = []; var array2 = []; var joined1 = []; var joined2 = []; .... .... // "1" and "2" below are result of evaluation of some session variables // I also need
var array1 = [];
var array2 = [];
var joined1 = [];
var joined2 = [];
....
....
// "1" and "2" below are result of evaluation of some session variables
// I also need to keep contents of array1 and array2
array1 = "1".split(','); // length 1, ["1"]
array2 = "2".split(','); // length 1, ["2"]
var joined1 = $.extend({}, array1, array2); // joined1 has one element ["2"]
// clone array2
var joined2 = array2.slice(0); // ["2"]
$.extend(joined2, array1); // joined2 = ["1"]
我想我可以使用javascript和“foreach”来实现这一点,但为了将来可能的使用,我需要知道“extend”的错误之处。问题是因为
$。extend
用于对象,而不是数组
当您将它与数组一起使用时,它将该数组中每个元素的索引作为键。因此,当使用$时,第二个数组将覆盖第一个数组。extend
作为一个对象,两个数组在键0
处都有值
如果您试图连接两个数组,则不需要jQuery。使用本机方法:
let array1=“1,11”。拆分(',');
设array2=“2,22”。拆分(',');
让连接=阵列1.concat(阵列2);
控制台日志(已加入)代码>
问题是因为$.extend
用于对象,而不是数组
当您将它与数组一起使用时,它将该数组中每个元素的索引作为键。因此,当使用$时,第二个数组将覆盖第一个数组。extend
作为一个对象,两个数组在键0
处都有值
如果您试图连接两个数组,则不需要jQuery。使用本机方法:
let array1=“1,11”。拆分(',');
设array2=“2,22”。拆分(',');
让连接=阵列1.concat(阵列2);
控制台日志(已加入)代码>
谢谢。我不知道它是为数组对象设计的。最后,我使用了您建议的一个变体:joined=$.unique([].concat.apply([],[array1,array2]).sort();我还必须确保不存在重复项并保留初始数组。没问题,很乐意提供帮助。仅供参考,您可以简化该调用:让joined=$.unique(array1.concat(array2)).sort()
谢谢。我不知道它是用于对象数组的。我最后使用了你建议的一个变体:joined=$.unique([].concat.apply([],[array1,array2)).sort();我还必须确保不存在重复项并保留初始数组。没问题,很乐意提供帮助。仅供参考,您可以简化该调用:let joined=$.unique(array1.concat(array2)).sort();