Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/434.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/8/svg/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
功能';concat&x27;(在JavaScript中)不适用于关联数组_Javascript_Arrays_Concatenation - Fatal编程技术网

功能';concat&x27;(在JavaScript中)不适用于关联数组

功能';concat&x27;(在JavaScript中)不适用于关联数组,javascript,arrays,concatenation,Javascript,Arrays,Concatenation,我在JavaScript中连接两个关联数组时遇到问题。下面是示例代码: var firstArray = new Array(); firstArray.c1 = "sam"; firstArray.c2 = "kam"; var secArray = new Array(); secArray.c3 = "sam"; secArray.c4 = "kam"; var res = firstArray.conca

我在JavaScript中连接两个关联数组时遇到问题。下面是示例代码:

var firstArray =  new Array();
firstArray.c1 = "sam";
firstArray.c2 = "kam";
var secArray =  new Array();
secArray.c3 = "sam";
secArray.c4 = "kam";
var res = firstArray.concat(secArray);
这是已知的限制吗

实现这一目标的最佳方法是什么?

试试以下方法:

var firstArray = new Array("sam", "kam");
var secArray = new Array("sam", "kam");
var res = firstArray.concat(secArray);

您没有使用
数组
功能-只使用
对象
功能。在JavaScript中,
Object
是一个关联数组-您可以使用
array
作为整数索引的数组。如果是的话

var firstArray =  new Array();
firstArray.push("sam");  
firstArray.push("kam");
var secArray =  new Array();
secArray.push("sam");    
secArray.push("kam");
var res = firstArray.concat(secArray);
然后,
concat
将按预期工作

如果确实要合并关联数组,请执行以下操作:

for (var attr in src_array) { dest_array[attr] = src_array[attr]; }

这当然会覆盖
dest_数组
中的现有键,这些键在
src_数组
中有对应项

JavaScript没有关联数组;它有对象散列。您正在创建一个数组并为其某些属性赋值,而不是在数组本身中


您的concat将不起作用,因为这些值是对象属性。要按现有方式进行concat,需要将两个对象组合起来,jQuery和其他JavaScript框架提供了实现这一点的有用方法。

严格地说,它们根本不是关联数组:它们是长度为零的数组,具有额外的命名属性。分配这些属性是有效的,因为数组也是JavaScript中的对象;但这并不能使它们成为关联数组。最好将它们看作散列


concat
这样的数组方法只适用于数组的数字索引元素,而不适用于对象的属性,即使这些对象恰好是数组。

JavaScript中的数组只有数字键。只有对象才能具有非数值特性。因此,请尝试以下方法:

var firstArray = {};
firstArray.c1 = "sam";
firstArray.c2 = "kam";
var secArray =  {};
secArray.c3 = "sam";  
secArray.c4 = "kam";

for (var prop in secArray) {
    if (secArray.hasOwnProperty(prop)) {
        firstArray[prop] = secArray[prop];
    }
}

为什么要裁员?在第二个数组中的属性上循环,然后使用第一个循环中的值在第二个数组上调用“hasOwnProperty”。你是想在第一个数组上测试“hasOwnProperty”吗?哇。。。。我能知道为什么我被否决了吗。。。。。。。。在这里提问是错误的。。??请面对你的朋友……我没有投票反对你,但我想这与你没有真正解释你所看到的问题有关。兄弟,我把我得到的所有信息都给了你。。。(连接两个关联数组)。。这还不够。。。ppl问问题是因为他们不知道。。。。对。@Ramesh:你没有显示结果是什么。拉梅什,这类问题需要:a)你尝试了什么,b)你期望发生什么,c)实际发生了什么。您没有提供b)和c)