我有一个像这样的字符串:
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('');
答案 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);