У меня есть строка вроде:
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('');



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы можете проверить значение с помощью isNaN и взять числа или строки для значений NaN.
var string = 'a5',
[row, col] = string.split('').map(v => isNaN(v) ? v : +v);
console.info(typeof row, row);
console.info(typeof col, col);Я думал о том, прежде чем это придет в голову. я нахожу это решение более общим.
Это хорошая идея отобразить его перед деструкцией, но я подумал, может ли сам деструктор это сделать ?? Например, получить его напрямую, как и ожидалось...
при деструктуризации LHS невозможна никакая другая операция, кроме присваивания или дальнейшей деструктуризации. (LHS = левая сторона)
Вы можете использовать функцию карты.
const coordinate = 'a5';
[columnLetter,row] = coordinate.split('').map((item) => typeof item == 'number' ? Number(item) : item);
console.info(columnLetter, row)Просто переназначьте переменную:
const coord = 'A5'
let [ col, row ] = coord.split('')
row = Number(row)
console.info(typeof col, col);
console.info(typeof row, row);Или сопоставьте значения:
const coord = 'A5'
const [col, row] = coord.split('').map(i => +i || i)
console.info(typeof col, col);
console.info(typeof row, row);Если ваша цель состоит в том, чтобы сделать это в одной строке:
doSomethingWithNumbers(coordinate[0], Number(coordinate[1]))
Я не хочу бросать его все время, где я его использую, но меня больше интересовала идея, чем решение этой проблемы... (что может быть тривиально)
вы также можете использовать индекс для преобразования в число, поэтому
.map((v,i)=>i?+v:v)тоже должно работать