Перетворення типів
Найчастіше оператори та функції автоматично наводять передані їм значення до потрібного типу.
Наприклад, alert автоматично перетворює будь-яке значення до рядка. Математичні оператори перетворять значення до чисел.
Є також випадки, коли нам потрібно явно перетворити значення на очікуваний тип.
У цьому розділі ми не торкаємось об'єктів. Спочатку ми розберемо перетворення примітивних значень.
Ми розберемо перетворення об'єктів пізніше, у розділі Перетворення об'єктів на примітиви.
Строкове перетворення
Рядкове перетворення відбувається, коли потрібно подання чогось у вигляді рядка.
Наприклад, alert(value) перетворює значення до рядка.
Також ми можемо використовувати функцію String(value) , щоб перетворити значення до рядка:
let value = true; alert(typeof value); // boolean value = String(value); // тепер value це рядок "true" alert(typeof value); // string
Перетворення відбувається очевидним чином. false стає "false", null стає "null" і т.п.
Чисельне перетворення
Чисельне перетворення відбувається в математичних функціях та виразах.
Наприклад, коли операція поділу / застосовується не до:
alert("6"/"2"); // 3, рядки перетворюються на числа
Ми можемо використовувати функцію Number(value) , щоб явно перетворити value до:
let str = "123"; alert(typeof str); // string let num = Number (str); // стає числом 123 alert(type of num); // number
Явне перетворення часто застосовується, коли ми очікуємо отримати число з рядкового контексту, наприклад текстових полів форм.
Якщо рядок не може бути явно наведений до числа, то результатом перетворення буде NaN . Наприклад:
let age = Number("Будь-який рядок замість числа"); alert(age); // NaN, перетворення не вдалося
Правила чисельного перетворення:
| Значення |
Перетворюється на… |
| undefined |
NaN |
| null |
0 |
| true / false |
1 / 0 |
| string |
Пробільні символи (пробіли, знаки табуляції \t, знаки нового рядка \n і т.п.) по краях обрізаються. Далі, якщо залишається порожній рядок, то отримуємо 0, інакше з непустого рядка «зчитується» число. При помилці результат NaN. |
alert(Number("123")); // 123 alert (Number ("123z")); // NaN (помилка читання числа дома символу " z " ) alert( Number(true) ); // 1 alert (Number (false)); // 0
Врахуйте, що null і undefined поводяться по-різному. Так, null стає нулем, тоді як undefined наводиться до NaN .
Більшість математичних операторів також здійснює це перетворення, як ми побачимо в наступному розділі.
Логічне перетворення
Логічне перетворення найпростіше.
Відбувається в логічних операціях (пізніше ми познайомимося з умовними перевірками та подібними конструкціями), але також може бути виконано за допомогою функції Boolean (value).
- Значення, які інтуїтивно «порожні», на зразок 0, порожнього рядка, null, undefined і NaN, стають false.
- Всі інші значення стають true.
alert (Boolean (1)); // true alert (Boolean (0)); // false alert (Boolean ("Привіт!")); // true alert (Boolean ("")); // false
Деякі мови (наприклад, PHP) сприймають рядок "0" як false. Але в JavaScript, якщо рядок не порожній, то він завжди true.
alert(Boolean("0")); // true alert( Boolean(" ") ); // пробіл це теж true (будь-який непустий рядок це true)
Разом
Існує 3 найбільш широко використовувані перетворення: рядкове, чисельне та логічне.
Строкове - Відбувається, коли нам треба щось вивести. Може бути викликано за допомогою String(value). Для примітивних значень працює явно.
Чисельне – Відбувається у математичних операціях. Може бути викликано за допомогою Number(value).
Перетворення підпорядковується правилам:
| Значення |
Стає… |
| undefined |
NaN |
| null |
0 |
| true / false |
1 / 0 |
| string |
Пробіли по краях обрізаються.Далі, якщо залишається порожній рядок, то отримуємо 0, інакше з непустого рядка «зчитується» число. При помилці результат NaN. |
Логічне – Відбувається у логічних операціях. Може бути викликано за допомогою Boolean (value).
| Значення |
Стає… |
| 0, null, undefined, NaN, "" |
false |
| будь-яке інше значення |
true |
Більшість цих правил легко зрозуміти і запам'ятати. Особливі випадки, в яких часто допускаються помилки:
- undefined при чисельному перетворенні стає NaN , не 0 .
- "0" і рядки з одних пробілів типу "" при логічному перетворенні завжди true.
У цьому розділі ми не говорили про об'єкти. Ми повернемося до них пізніше, у розділі Перетворення об'єктів на примітиви, присвяченій тільки об'єктам, відразу після того, як дізнаємося більше про основи JavaScript.
Перетворення масиву на число в JavaScript
Явно перетворити масив у число можна лише у разі, якщо елементами масиву є числа, чи рядки, які можна перетворити на числа.
Для перетворення підійде метод join(), який дозволяє об'єднати елементи масиву. Однак, оскільки на виході ми отримаємо рядок, необхідно додатково його перетворити на число, наприклад за допомогою унарного оператора + .
let array1 = [1, 2, 3, 4, 5]; array1.join(''); // '12345' - отримаємо рядок +array1.join(''); // 12345 - отримаємо число let array2 = ['1', 2, '345']; +array2.join(''); // 12345
Якщо масив складається з рядків, що містять не тільки числа, необхідно масив перебрати і для кожного елемента скористатися одним із способів перетворення рядка на число. Розглянемо випадок, коли підійде метод match().
let array = ['33 корови', '4 таргани та 1 цвіркун', 'в октеті 8 осіб']; array.map(item => item.match(/d/g).join('')); // ['33', '41', '8'] +array.map(item => item.match(/\d/g).join('')).join(''); // 33418
Якщо в масиві є і число і рядок, то спочатку робимо з масиву рядок (про методи в цьому розділі), а потім з нього число.
let array = ['33 корови', '4 таргани та 1 цвіркун', 987]; let string = array.toString(); // '33 корови,4 таргани і 1 цвіркун,987' let number = +string.match(/\d/g).join(''); // 3341987
🔥 Як перетворити масив str в int в Python за кілька кроків
Щоб перетворити масив рядків (str) на цілий масив (int) у Python, ви можете використовувати функцію map() з функцією перетворення int() . Ось приклад коду:
str_arr = ["1", "2", "3", "4", "5"] int_arr = list(map(int, str_arr)) print(int_arr)
У цьому прикладі створюємо масив рядків str_arr , що містить числа у вигляді рядків. Потім ми використовуємо функцію map() , яка застосовує функцію перетворення int() кожного елемента масиву str_arr . Результат перетворення зберігається у новому масиві int_arr. Для отримання фінального результату, ми перетворимо об'єкт map на список за допомогою функції list() .
Детальна відповідь
Як з масиву str зробити int в Python
Якщо у вас виникла потреба перетворити масив рядків (str) на цілі числа (int) на Python, тут я надам вам кілька простих методів, які можуть виконати це завдання.
1. Використовуючи функцію map()
Функція map() може бути використана для застосування функції кожного елемента в масиві. У цьому випадку ми можемо використовувати вбудовану функцію int() , щоб перетворити кожен рядок на ціле число.
str_array = ["1", "2", "3", "4"] int_array = list(map(int, str_array))
У цьому прикладі ми створюємо новий масив int_array , який буде містити цілі значення елементів вихідного масиву str_array .
2. Використовуючи генератор списку (List comprehension)
Генератор списку (List comprehension) пропонує ще один зручний спосіб перетворення масиву рядків у цілі числа.Ми можемо використовувати синтаксис генератора списку та функцію int() для досягнення цієї мети.
str_array = ["5", "6", "7", "8"] int_array = [int(x) for x in str_array]
У цьому прикладі ми створюємо новий масив int_array за допомогою генератора списку, де кожен елемент перетворюється на ціле число за допомогою функції int() .
3. Використовуючи метод map() та lambda-функцію
Ще один спосіб використання функції map() - у комбінації з lambda-функцією.
str_array = ["9", "10", "11", "12"] int_array = list(map(lambda x: int(x), str_array))
У цьому прикладі ми створюємо новий масив int_array , в якому кожен елемент виходить шляхом застосування lambda-функції, що перетворює рядок на ціле число.
4. Використовуючи цикл for
Звичайно, ми також можемо використовувати цикл для ітерації по кожному елементу масиву рядків і перетворення їх у цілі числа за допомогою функції int() .
str_array = ["13", "14", "15", "16"]
У цьому прикладі ми створюємо порожній масив int_array , а потім використовуємо цикл for , щоб пройти по кожному елементу масиву str_array і перетворити кожен рядок на ціле число.
Висновок
Вищезгадані методи прості у використанні і можуть бути застосовані для перетворення масиву рядків (str) у цілі числа (int) у Python. Виберіть той метод, який найбільш зручний у вашому контексті та застосовуйте його у своїх проектах.