有一些JavaScript问题,for loop.将数字转换为其字符串值
having some javascript trouble, for loop. turning a number into its string value
我正在寻找一个程序,它将一个实数组合成一个字符串,无论长度如何。 出于这些目的,1234 可以变成"一"二"三"四"或"一二三四"或 w/e。我试图通过遍历实数然后遍历数组来做到这一点。 我在节点中的输出未通过如下所示的控制台.log()定义。不太确定该怎么做,因为我是新手,非常感谢任何帮助。
var datArray = ["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"]
var toEnglish = function (number) {
for ( var i = 0; i <= number.length; i++ ) {
var newNumber = datArray[number[i]];
newNumber = newNumber + newNumber;
}
console.log(newNumber);
return newNumber;
}
toEnglish(1234);
你快到了。 除以下所有内容外:
- 您必须将数字更改为字符串
- 您不必每次都重新分配新号码
- 您必须在循环中使用严格的小于比较
所以
var datArray = ["zero", "one", "two", "three", "four",
"five", "six", "seven", "eight", "nine"];
var toEnglish = function (number) {
number = number.toString();
var newNumber = "";
for ( var i = 0; i < number.length; i++ ) {
newNumber += datArray[number[i]];
}
return newNumber;
}
toEnglish(1234);
编辑
一个功能更强大、更简洁的版本将是
var toEnglish = function (number) {
return number.toString().split('').map(function(i) {
return datArray[i]
}).join(' ');
};
这假设了一个内置map
的Javascript版本,但几乎每个库(jQuery,underscore等)都会有一些等效的库。
事实上,如果你确定有一个非常高级的Javascript版本(例如在Firefox中),你可以把它写成
var toEnglish = function (number) {
return number.toString().split('').map(i => datArray[i]).join(' ');
}
嘘。
数字没有长度:
> console.log(1234.length);
< undefined
必须先将其转换为字符串:
> console.log(String(1234).length);
< 4
您还不断重置newNumber
所以我使用了一个数组并附加了项目(因此,如果我们愿意,可以使用分隔符加入)。最后,我删除了循环中的<= number.length
并将其替换为< number.length
,否则我们将使用不存在的字符。因此,您的代码可以转换为以下内容:
var datArray = ["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"]
var toEnglish = function (number) {
number = String(number); // Cast it
var result = [];
for ( var i = 0; i < number.length; i++ ) {
result.push(datArray[number[i]]); // Add the text to result
}
return result.join(' '); // Return the results seperated by space
}
用法:
> toEnglish(1234);
< "one two three four"
三件事:
-
number
是一个数字,没有.length
属性。改为传递像"1234"
这样的字符串,或者将参数转换为字符串。 - 您只需将当前数字的单词加倍,覆盖以前的结果并仅返回最后一个结果,即可生成
newNumber
。相反,使用空字符串初始化并重复连接到它。 - 循环不能运行到输入的长度,而是低于输入的长度,因为序列从
0
到n-1
索引。
function toEnglish(number) {
number = String(number);
var newNumber = "";
for (var i = 0; i < number.length; i++) {
newNumber += datArray[number[i]];
}
return newNumber;
}
console.log(toEnglish(1234));
这样的东西可能会起作用,但我看到已经有很多答案了,所以无论如何。感谢您的编码练习。
var datArray = ["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"]
var toEnglish = function (number) {
var exploded = number.toString().split("");
var newNumber = "";
exploded.forEach(function(number) {
newNumber += datArray[ number ];
});
// for ( var i = 0; i <= number.length; i++ ) {
// var newNumber = datArray[number[i]];
// newNumber = newNumber + newNumber;
// }
console.log('newNumber', newNumber);
return newNumber;
}
toEnglish(1234);
相关文章:
- 将数字转换为一定数量的硬币
- 将数组键转换为数字node.js
- 将数字转换为字符串数字
- 试图了解如何使用parseFloat将字符串转换为数字
- 如何在html中将字符串转换为数字?以及如何将变量传递到scriptlet代码中
- angularjs在数字(html5)字段中将0转换为1
- 秒数转换波斯数字
- Podio问题:Can't将字符串转换为数字
- 将字符串文件类型/权限转换为数字
- 将日期字符串转换为数字以进行比较
- $.get将数字转换为字符串
- 这个javascript代码有什么错误,它有将数字转换为单词的功能
- Java脚本插件,用于将数字转换为特定于区域性的货币格式,并将具有特定货币格式的非格式化数字转换为普通数字
- 为什么 +str 在 JS 中比 str*1 更好地将字符串转换为数字
- 如何将返回一串数字的 JSON 属性转换为日期
- 在JavaScript中,有没有一种方法可以解析JSON,将数字转换为字符串
- 转换为对象的数字
- jQuery:将属性值转换为嵌套数组(字符串转换为数字)
- 如何在javascript中转换数字到时间格式
- 在javascript中转换数字会产生NAN