在JavaScript中将数组转换为字符串时,请删除未定义的元素

时间:2019-06-28 07:59:53

标签: javascript

通过练习来练习,您需要将数组中的所有元素都作为一个字符串。我知道对于数组来说,有一个更简单的js方法可以完成任务。

在字符串的开头我一直得到undefined element。我认为是通过使用reverse()方法实现的。希望了解我的代码中存在细微差异的其他解决方案。

let arrayLength = stringMe.length;
stringMe.reverse();
let myString;
for (;arrayLength >= 1; arrayLength--) {
  let charStorage   = stringMe.pop(); 
  myString = myString + charStorage;
}

console.log(myString);

预期输出应为fox,但实际输出应为undefinedfox

6 个答案:

答案 0 :(得分:4)

尝试使用空字符串初始化myString let myString = "";

答案 1 :(得分:0)

var array = [0, 1, null, 2, "", 3, undefined, 3,,,,,, 4,, 4,, 5,, 6,,,,];

var filtered = array.filter(function (el) {
  return el != null;
});

console.log(filtered.toString());

答案 2 :(得分:0)

除了缺少变量的初始化之外,您还可以省略反转(应该执行算法),并使用while语句来检查数组的长度。

然后将弹出的字符添加到结果字符串中。

var stringMe = 'fox'.split(''),
    myString = '';

while (stringMe.length) {
    myString += stringMe.pop();
}

console.log(myString);

答案 3 :(得分:0)

您可以使用:Array.prototype.reverse()Array.prototype.join()用1行代码完成任务,如下所示:

stringMe.reverse().join("");

var stringMe = ["I ", "am ", "D.F. ", undefined];

var result = stringMe.reverse().join("");

console.log(result);

答案 4 :(得分:0)

您是对的,当然有更好的方法可以做到这一点。但是,如果您真正想做的就是纠正错误,那么您只需将myString初始化为空字符串即可。

如果不初始化myString,则其初始值为undefined。进一步的问题行为将由此产生。

在循环的第一次迭代中,它将尝试将+与数组的第一个元素连接(使用myString运算符)。如果第一个元素是alpha,则将导致undefinedalpha合并形成undefinedalpha。发生这种情况是因为+运算符会将值 undefined 强制转换为字符串undefined,以便可以将其与字符串alpha串联在一起。参见this longer explanation

要解决此问题,只需确保myString最初的值为''(空字符串)即可。

let stringMe = ['alpha', 'bravo', 'charlie'];

let arrayLength = stringMe.length;
stringMe.reverse();
let myString = '';
for (;arrayLength >= 1; arrayLength--) {
  let charStorage   = stringMe.pop(); 
  myString = myString + charStorage;
}

console.log(myString);

更好的方法:使用join

我还必须提出Array.prototype.join()是最好的解决方案。

使用join将数组中的所有项目连接在一起,并使用空字符串('')作为项目之间的分隔符。

例如:

let stringMe = ['alpha', 'bravo', 'charlie'];

let myString = stringMe.join(''); // separate each item with an empty string.

console.log(myString);

结果:alphabravocharlie

答案 5 :(得分:0)

let stringMe = ['alpha', 'bravo', 'charlie'];

let arrayLength = stringMe.length;
stringMe.reverse();
let myString = '';
for (;arrayLength >= 1; arrayLength--) {
  let charStorage   = stringMe.pop(); 
  myString = myString + charStorage;
}

console.log(myString);