通过练习来练习,您需要将数组中的所有元素都作为一个字符串。我知道对于数组来说,有一个更简单的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
答案 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
,则将导致undefined
和alpha
合并形成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);