Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用jQuery连接两个数组;扩展;返回一个数组_Javascript_Jquery - Fatal编程技术网

Javascript 使用jQuery连接两个数组;扩展;返回一个数组

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

我正在尝试对两个一维数组进行简单的合并,结果是一个数组的内容或另一个数组的内容,这取决于我如何使用“$.extend”。显然我做错了什么,但我看不出来

简化的例子是:

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();