Javascript将具有空值的数组插入字符串

时间:2018-08-07 05:04:25

标签: javascript

是否可以在连接字符串时显示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'

4 个答案:

答案 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"

希望你在这里抓到了吗?