如何在没有连接的情况下将数组转换为没有逗号的字符串并在javascript中用空格分隔?

IT技术 javascript arrays string
2021-02-20 19:53:32

我知道你可以通过循环遍历数组元素和连接来做到这一点。但我正在寻找单线解决方案。toString() 和 join() 返回以逗号分隔元素的字符串。例如,

var array = ['apple', 'tree'];
var toString = array.toString()    # Will return 'apple,tree' instead of 'apple tree', same for join() method
6个回答

当您在join不传递任何参数的,情况下toString调用时(逗号) 被视为默认值,并且在join不传递任何参数的情况下进行内部调用

所以,通过你自己的分隔符。

var str = array.join(' '); //'apple tree'
// separator ---------^

Array.join 上的 MDN

令人惊讶的是,有多少次console.log()让您意识到一个功能并没有完全按照您的预期执行...
2021-05-01 19:53:32
有没有办法显示 [apple] [tree] 呢?
2021-05-01 19:53:32

将分隔符传递给join.

['apple', 'tree'].join(' '); // 'apple tree'

使用 Array.join() 方法。修剪以删除任何不必要的空格。

var newStr = array.join(' ').trim()

如果我们只做 array.join('') 呢?所以没有必要修剪。
2021-05-12 19:53:32

最简单的方法是使用.join(' ').

但是,如果 Array 包含零长度对象,例如null,以下代码将避免多个空格:

arr.filter(i => [i].join(" ").length > 0).join(" ");

下面是一些示例用法:

Array.prototype.merge = function(char = " ") {
  return this.filter(i => [i].join(" ").length > 0).join(char);
};

console.log(["a", null, null, "b"].merge());

如果你不想使用 toString() 或 join(),你可以这样做:

for(let i=0;i</*Array*/.length;i++)if(/*Variable*/=="")/*Variable*/+=/*Array*/[i];else /*Variable*/+="/*Separator*/"+/*Array*/[i];

分隔符是在每个项目之间放置的内容。在您的情况下,您可以将其更改为空格。