数组解构为数字类型

时间:2019-03-20 14:00:58

标签: javascript arrays casting type-conversion

我有一个像这样的字符串:

const coordonate = 'a5'; 

我想将要转换的字母拆分为代表列的数字和代表行的<5>。

为此,我这样做:

[columnLetter, row] = coordinate.split('');

column = getColumnByLetter(columnLetter); // Returns a number.

....

result = doSomethingWithNumbers(column, row); // The problem is row is a String.

我可以做到:

result = doSomethingWithNumbers(column, Number(row));

但是我想知道是否有一种方法可以直接检索行作为数字... 像这样:

[columnLetter, Number(row)] = coordinate.split('');

5 个答案:

答案 0 :(得分:3)

您可以使用isNaN检查值,并为NaN值取数字或字符串。

var string = 'a5',
    [row, col] = string.split('').map(v => isNaN(v) ? v : +v);
    

console.log(typeof row, row);
console.log(typeof col, col);

答案 1 :(得分:0)

您可以使用地图功能。

const coordinate = 'a5'; 
[columnLetter,row] = coordinate.split('').map((item) => typeof item == 'number' ? Number(item) : item);
console.log(columnLetter, row)

答案 2 :(得分:0)

只需重新分配变量:

const coord = 'A5'

let [ col, row ] = coord.split('')
row = Number(row)

console.log(typeof col, col);
console.log(typeof row, row);

或映射值:

const coord = 'A5'

const [col, row] = coord.split('').map(i => +i || i)

console.log(typeof col, col);
console.log(typeof row, row);

答案 3 :(得分:0)

如果您的目标是要一行完成:

doSomethingWithNumbers(coordinate[0], Number(coordinate[1]))

答案 4 :(得分:0)

您可以使用Array.from根据坐标字符串创建数组,其中每个字符都被强制转换为数字或保留为字符串:

const coordinate = 'a5';
[columnLetter, row] = Array.from(coordinate, c => +c || c); // [str: 'a', num: 5]

console.log(typeof columnLetter, typeof row);