Javascript-форум (https://javascript.ru/forum/)
-   Javascript под браузер (https://javascript.ru/forum/css-html/)
-   -   Замена элементов массива элементами массива (https://javascript.ru/forum/css-html/41787-zamena-ehlementov-massiva-ehlementami-massiva.html)

prostoix 29.09.2013 14:29

Замена элементов массива элементами массива
 
Здравствуйте.
Прошу подсказать как значения в (arrB) массива,заменить значениями совпадающими из (arrA) массива.

var arrA = [['1','a'],['2','b'],['3','c'],['4','d']];
var arrB = ['1','4','2','8','1','6','5','2','4'];

Ответ должен получиться: // arrB = 'a','d','b','8','a','6','5','b','d'

ksa 29.09.2013 14:42

Цитата:

Сообщение от prostoix
как значения в (arrB) массива,заменить значениями совпадающими из (arrA) массива

- пройтись в цикле по arrB
- смотреть значения в arrA
- если они есть - менять элемент в arrB

Demath 29.09.2013 15:06

Тупо перебором

function Arrays(A,B)
{
    var m = A.length, n = B.length;
  
    for (var i = 0; i < m; i++)
     { for (var j = 0; j < n; j++)
        { if (B[j] === A[i][0]) B[j] = A[i][1]; }
     }
 
    return B;
}

var arrA = [['1','a'],['2','b'],['3','c'],['4','d']],
    arrB = ['1','4','2','8','1','6','5','2','4'];
alert( Arrays(arrA,arrB) );

BETEPAH 29.09.2013 20:48

Цитата:

Сообщение от prostoix
var arrA = [['1','a'],['2','b'],['3','c'],['4','d']];

странный массив получился у Вас. Вообще массив отличается от объекта тем, что его ключи являются порядковыми номерами, поэтому проще было бы использовать var arrA = [0, 'a', 'b', 'c', 'd'];
и соответственно цикл замены
var arrA = [0, 'a', 'b', 'c', 'd'],
arrB = ['1','4','2','8','1','6','5','2','4'];
for(i = 0; i < arrB.length; i++) arrB[i] = arrA[arrB[i]] || arrB[i];
alert(arrB);

prostoix 24.10.2013 17:36

Большое спасибо за ответы. Остановился на варианте "Тупа перебора" работает прекрасно =)


Часовой пояс GMT +3, время: 01:00.