【发布时间】:2022-02-09 04:10:49
【问题描述】:
当我在 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。在我的真实项目中,我使用的是 Angular 1.4;所以,如果有办法用它来concat 数组,我愿意接受。
【问题讨论】:
-
concat返回一个新数组,它不会发生变异。 -
^
obArray2 = obArray2.concat(greetings2) -
另外,
Function.prototype.call的第一个参数定义了调用的上下文(this的值),而不是第一个要连接的数组 -
@Sebas 是的,但事实证明在这种情况下它是正确的;第一个例子是多余的。
标签: javascript arrays