当我在javascript中创建两个数组并尝试使用' concat'来连接它们时关键字,结果数组总是空的(好吧,不插入应该插入的数组中的东西)。我无法想象这实际上是js应该如何工作,因为那时......如果它什么都不做,那将是concat关键字的重点。哈哈。
那么我必须做错事,但我完全按照文档进行操作。
这是一个演示我的问题的小提琴:https://jsfiddle.net/webwhizjim/7z4v33of/
// Example with objects- doesn't work...
var greetings = [{"affirmative":"yeah"}];
var exclamations = [{"omg":"Oh my golly-gee-wilickers!"},{"wowz":"wowzers!"}];
var obArray = [];
obArray.concat(greetings);
console.log("The jumble array is: " + obArray);
// Example with strings- still doesn't work...
var greetings2 = ["affirmative","yeah"];
var exclamations2 = ["omg"];
var obArray2 = ["huh?"];
[].concat.call(obArray2, greetings2);
console.log("The jumble array is: " + obArray2);
要清楚地说明它不起作用"我的意思是控制台输出是这样的:
PS。在我的真实项目中,我使用的是角度1.4,所以如果有一种方法可以将数组连接起来,我可以使用它。
答案 0 :(得分:2)
.concat()
创建一个新数组并返回它。它不会将元素添加到现有数组中。
来自MDN:
concat创建一个由对象中的元素组成的新数组 它被称之为,每个参数的顺序依次为 该参数的元素(如果参数是数组)或者 参数本身(如果参数不是数组)。
concat不会改变此参数或作为参数提供的任何数组 但是返回一个包含相同副本的浅拷贝 元素与原始数组相结合。原始元素 数组被复制到新数组中,如下所示:
您可以使用.splice()
或.push()
将元素添加到现有数组中。
var greetings2 = ["affirmative","yeah"];
var obArray2 = ["huh?"];
obArray2.push.apply(obArray2, greetings2);
// display result in snippet
document.write(JSON.stringify(obArray2));

或者,只需使用.concat()
中新返回的数组:
var greetings2 = ["affirmative","yeah"];
var obArray2 = ["huh?"];
var newArray = obArray2.concat(greetings2);
// display result in snippet
document.write(JSON.stringify(newArray));

答案 1 :(得分:1)
就像其他人所说的那样,.concat
会返回一个新数组,并且不会改变您正在使用的数组的原始状态。如果您希望通过.concat
连接两个数组的值,则必须将其存储在变量中,或者只需将其连接到您需要的地方。
示例:
var greetings = [{"affirmative":"yeah"}];
var exclamations = [{"omg":"Oh my golly-gee-wilickers!"},{"wowz":"wowzers!"}];
var obArray = greetings.concat(exclamations);
console.log(obArray); // returns [obj, obj, obj]
这会给你相同的结果:
console.log(greetings.concat(exclamations));
最后一件事。像.concat
这样的方法可以链接。
答案 2 :(得分:0)
尝试以下方法:
var greetings = [{"affirmative":"yeah"}];
var exclamations = [{"omg":"Oh my golly-gee-wilickers!"}, {"wowz":"wowzers!"}];
var obArray = Array.prototype.concat.apply([], greetings, exclamations);
console.log("The jumble array is: " + obArray);
//Console Output: The jumble array is: [object Object]
var greetings2 = ["affirmative","yeah"];
var exclamations2 = ["omg"];
var obArray2 = [].concat(greetings2, exclamations2);
console.log("The jumble array is: " + obArray2);
//Console Output: The jumble array is: affirmative,yeah,omg