我在不使用任何JS内置功能的情况下编写功能。该功能接受一个数组['z','c',2,115,30],然后在第一个数组中创建一个带有achs achs的新数组,以及以前存在的正常数字,因此:[127,67,2,115,30]。我遇到的问题是,我无法正确从第一个数组中获得数字进入第二个数组。
到目前为止,我可以将新阵列置于[127,67,2,1,1,5,3,0]。因此,chars ascii值正正确地输入到新数组中,但是当我只希望将整个数字输入而不是每个数字时,将每个数字的数字迭代时,将每个数字的数字放入数组中。
function func(x){
var str = '';
var arr = [];
for(var i=0; i<x.length;i++){
str += x[i]
}
for(var j=0; j<str.length;j++){
if(isNaN(str[j])){
arr += str.charCodeAt(j) + ', ';
}
else if(!isNaN(str[j])){
arr += str[j] + ', ';
}
} print(arr)
}
func(['z','C',2,115,30])
我希望输出[122,67,2,115,30],当前输出为[122,67,2,1,1,1,5,3,0,]
不要集合成一个字符串 - 而是使用一个简单的for
循环:
function func(x) {
var arr = [];
for (let i = 0; i < x.length; i++) {
if (typeof x[i] == "string") arr[arr.length] = (x[i].charCodeAt(0);
else arr[arr.length] = x[i];
}
console.log(arr);
}
func(['z','C',2,115,30]);
使用数组方法要简单得多:
function func(x) {
var arr = x.map(e => typeof e == "string" ? e.charCodeAt(0) : e);
console.log(arr);
}
func(['z','C',2,115,30]);