为什么[,,]。join('')长度比数组长度少一个?

问题描述 投票:0回答:3

加入string所产生的var arr = [,,]长度背后的原因是什么:var str = arr.join(' ')arr的长度少一个。

var literal_arr = [,,],
    joined_literal_arr = literal_arr.join(' '),
    constructor_arr = new Array(2),
    joined_constructor_arr = new Array(2).join(' ');

console.log("Literal array notation length = ", literal_arr.length);

console.log("Joined literal array notation string length = ", joined_literal_arr.length);

console.log("Constructor array notation length = ", constructor_arr.length);

console.log("Joined constructor notation string length = ", joined_constructor_arr.length); 
javascript
3个回答
4
投票

根据MDN docs

如果元素未定义或为null,则将其转换为空字符串。

在您的情况下,您正在创建一个具有特定长度的数组,没有任何值(它将是undefined)。所以在加入时会有length - 1分隔符(因为undefined已被视为空字符串)意味着length - 1空格(' ')。


0
投票

哦!我认为join()方法用于将数组(或类数组对象)的所有元素组合成一个字符串并返回该行。

例如。

var elements = ['Fire', 'Air', 'Water'];
console.log(elements.join(''));

//预期产量:“Fire-Air-Water”

并且...如果您尝试组合空白数组,Join()仅返回组合字符串。因此,对于您的示例包括一个组合字符串,它返回长度 - 1.如果您尝试使用长度为3的数组,则返回长度为2。


-1
投票

这很简单,因为.join将使用separator作为参数连接数组元素

它不会在最后一个元素之后和第一个元素之前附加separator

将仅在元素之间放置separator

希望这能清除你的困惑!!

© www.soinside.com 2019 - 2024. All rights reserved.