0

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

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

console.log(tab2);

4

1 回答 1

0

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

PS你的代码有很多错误要计算,所以除非你想让我去,否则我不会去经历它们。

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, 3, 104, 11, 80]
var tab1=['d','e',3,'h',11,-2,'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, 101, 3, 104, 11, 80]
于 2021-03-18T19:14:39.750 回答