通过 .charCodeAt() 将带数组的字符串转换为整数数组的问题

问题描述

我的任务是编写一个将字符串更改为整数的函数。如果该值大于零,我必须将其保存在一个新数组中,如果它不进行过滤,则与数组中的数字相同。 tab1 = ['d','e',3,'h',11,-2,'P'] 这是董事会。 一般是根据ASCII的变化,但有细微的变化,因为例如d要写成3,即从每个结果中减去额外的97。谁能帮我这个?我完全不知道该怎么做:( 到目前为止,我已经成功地创造了这么多; /

var tab1=['d','P'];
let tab2=[];
function convertStingToInt(){
    for (let i = 0; i < tab1.length; i++)
    tab2 = tab1.charCodeAt([i]);
}

console.log(tab2);

解决方法

这里有两个可以正常工作的版本——我更喜欢最后一个(为了可读性)。

附言你的代码有很多错误要计算,所以除非你想让我做,否则我不会去检查它们。

var tab1=['d','e',3,'h',11,-2,'P'];

function convertStingToInt(arr){
    let tab2=[];
    for (let i = 0; i < arr.length; i++) {
        if (typeof arr[i] !== 'number') {
          var val = arr[i].charCodeAt(0);
        } else {
          var val = arr[i];
        }
        if (val > 0) tab2.push(val);
    }
    return tab2;
}

console.log(convertStingToInt(tab1)); // [100,101,104,80]
var tab1=['d','P'];

var tab2 = tab1.map(function(x) {
  if (typeof x !== 'number') {
    return x.charCodeAt(0);
  } else {
    return x;
  } 
}).filter(function(x) {
  if (x > 0) return true;
});

console.log(tab2); // [100,80]