返回具有ascii值和先前数组编号的新数组

时间:2019-07-29 22:05:34

标签: javascript arrays

我编写的函数不使用任何JS内置函数。此函数接受数组['z','C',2,115,30],然后创建一个新数组,该数组的第一个数组中包含char的ascii值加上以前的普通数字,因此:[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,5,3,0,]

1 个答案:

答案 0 :(得分:2)

不要组合成一个字符串-而是使用简单的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]);