Как заменить элементы одного массива элементами другого по заданному правилу?
Забыли .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('') склеит элементы массива (теперь уже буквы) в одну строку.
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');  // БГЕЗК