@LShAnka
начинающий программист-любитель

Как заменить элементы одного массива элементами другого по заданному правилу?

Каждой цифре соответствует буква (0-А, 1-Б и так до 9). Необходимо вводимое число преобразовать в набор букв, соответствующих каждой цифре числа. Помогите найти ошибку, пожалуйста
var arr1 = '3649824598';
var arr2 ='АБВГДЕЖЗИК';
for (i=0; i<arr1; i++) {
    for (j=0; j<arr2; j++){
    if (arr1[i] == j) 
        arr1[i]=arr2[j];
    }
}
console.log (arr1);
  • Вопрос задан
  • 3189 просмотров
Решения вопроса 2
sergiks
@sergiks Куратор тега JavaScript
♬♬
Забыли .length – вероятно, собирались перебирать i от 0 до длины строки arr1. Тут не массивы, а две строки.

for (i=0; i<arr1.length; i++) {
    for (j=0; j<arr2.length; j++){


Вложенный цикл не нужен. Достаточно перебрать каждую цифру входа.

Чтобы найти соответствующую цифре i букву, достаточно взять i-й элемент строки arr2:
arr2[ i ];

Коротко, в одну строку это можно решить через преобразование строки в массив и применение функции к каждому элементу.
В одну строку
var arr1 = '3649824598';
var arr2 ='АБВГДЕЖЗИК';

arr1.split('').map(n => arr2[n]).join('')  // ГЖДКИВДЕКИ

  • split('') сделает из строки массив цифр;
  • map() применит к каждой цифре функцию, которая заменит цифру на соотв. букву из arr2;
  • join('') склеит элементы массива (теперь уже буквы) в одну строку.
Ответ написан
Комментировать
rockon404
@rockon404
Frontend Developer
ES5:
function encode(str) {
  var chars =  'АБВГДЕЖЗИК';

  return str.split('').map(function(n) {
    return chars[n];
  }).join('');
}

encode('13579');  // БГЕЗК

Демо

ES6:
const encode = str => str.split('').map(n => 'АБВГДЕЖЗИК'[n]).join('');

encode('13579');  // БГЕЗК
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы