是否可以在连接字符串时显示null元素?
var arr = [];
arr.push('x');
arr.push(null);
arr.push('z');
// arr = ['x', null, 'z']
var samp = 'Array elements are: ' + arr;
// Array elements are: 'x',,'z'
我想要的输出:
Array elements are: 'x', null,'z'
答案 0 :(得分:8)
您可以使用Array.map将String
应用于自变量。这非常简洁:
arr.map(String)
var arr = [];
arr.push('x');
arr.push(null);
arr.push('z');
var samp = 'Array elements are: ' + arr.map(String);
console.log(samp);
答案 1 :(得分:0)
将数组强制转换为字符串会调用.join
方法,并且:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/join
如果元素未定义或为null,则将其转换为空字符串。
因此,您不能使用隐式强制或.join
。一种选择是使用reduce
手动连接每个元素(以免跳过null
s):
var arr = [];
arr.push('x');
arr.push(null);
arr.push('z');
const joined = arr.reduce((a, elm) => a + (a ? ',' : '') + elm);
var samp = 'Array elements are: ' + joined;
console.log(samp);
如果您还希望每个字符串都包含引号,就像您的
Array elements are: 'x', null,'z'
然后在连接前检查typeof
每个元素:
var arr = [];
arr.push('x');
arr.push(null);
arr.push('z');
const joined = arr.reduce((a, elm) => {
const quote = typeof elm === 'string' ? "'" : '';
return a + quote + (a ? ',' : '') + elm + quote;
}, '');
var samp = 'Array elements are: ' + joined;
console.log(samp);
(如果元素本身包含任何单引号,您可能还希望将其替换为\'
)
答案 2 :(得分:0)
JSON.stringify
知道如何以字符串形式表示内容。如果只对数组进行字符串化处理,则几乎可以得到所需的结果:
JSON.stringify(arr)
# => ["x",null,"z"]
但是,如果您自己动手,则可以避免使用方括号,而在...中留出更多空间...
arr.map(JSON.stringify).join(', ')
# => "x", null, "z"
答案 3 :(得分:0)
这是一个不寻常但有趣的要求。 一件容易的事是,您希望将null显示为最终字符串的一部分。所以,这是我尝试过的:
function arrToStr(inputArr){ //this func will return str with null
var str=undefined;
inputArr.map(function(i){str = (str!==undefined) ? (str+", "+i) : i})
return str;
}
var arr = [];
arr.push('x');
arr.push(null);
arr.push('z');
var samp = 'Array elements are: ' + arrToStr(arr);
//samp - "Array elements are: x, null, z"
希望你在这里抓到了吗?