array()。join()在以下代码中做了什么?

时间:2016-07-09 20:57:22

标签: javascript arrays join

 var object = {
      mastermind : "Brain",
      henchman: "Pinky",
      battleCry: function (noOfBrains) {
        return "They are " + this.henchman + " and the" +
                 Array(noOfBrains + 1).join(" " + this.mastermind);
  }
};

var battleCry = object.battleCry(4);

-

你能解释为什么 array()。join() return

  • 正确:"他们是粉红色和脑脑脑脑"
  • 不正确:"他们是Pinky和5 Brain"

4 个答案:

答案 0 :(得分:1)

这将创建一个具有未定义元素的给定长度的数组。在这个例子中长度为5.当5个元素连接在一起时,有4个分隔符,每个分隔符都是“脑”

var dummyArray = Array(5);

console.log("Our Dummy Array");
console.log(dummyArray);
console.log();

console.log("Our Dummy Array Joined More Conventially");
console.log(dummyArray.join(","));
console.log();

console.log("Our Dummy Array Joined More Brainly");
console.log(dummyArray.join(" Brain"));
console.log();

答案 1 :(得分:1)

因为Array(noOfBrains + 1).join(" " + this.mastermind)中有this.mastermind包含字符串" Brain "。
noOfBrains是' 4'。

因此Array(4+1).join(" " +"Brain")变成Array(5).join(" Brain")会将输出显示为Brain Brain Brain Brain

答案 2 :(得分:1)

array().join()用于将数组的所有元素连接在一起。 (可选)您可以指定分隔符以分隔元素。

在您的代码中,Array(noOfBrains + 1)创建一个具有给定长度的新数组,在您的示例中为4 + 1 = 5个项目,但所有这5个项目都是空的,因为您的代码没有为它们分配任何内容。因此,您的代码使用"加入5个空字符串。脑"作为分隔符。从本质上讲,此函数实际上是分配给mastermind属性的任何字符串的转发器,其次数与传递它一样多。

答案 3 :(得分:0)

数组连接使用一些字符串粘合将数组的所有元素连接到字符串。

var a = ['one', 'two', 'three'];
console.log(a.join(', '));

你会看到"一,二,三"在控制台中。

在您的情况下胶水是"脑&#34 ;.数组是[5] - 我的意思是一个元素的数组是5(4 + 1 = 5)。所以,[5] .join(' Brain')=" 5"

如果你需要重复一些字符串2次或更多次,你可以使用String.repeat(次)。

在你的情况下:

var bcObject = {
    mastermind : "Brain",
    henchman: "Pinky",
    battleCry: function (noOfBrains) {
        return "They are " + this.henchman + " and the" +
            (' ' + this.mastermind).repeat(noOfBrains);
    }
};

var battleCry = bcObject.battleCry(4);