2015-08-11 3 views
2

я получил 3 массивовДобавление элементов в массив на основе другого значения массива

var arr1 = ["2", "3", "1"], 
    arr2 = ["x", "y", "z"], 
    arr3 = []; 

как я могу назвать элементы из arr2 Into arr3 в соответствии с порядком arr1 номера? Пример:

arr3 = ["y", "z", "x"]; 
+0

вы попробуйте, прежде чем отправлять ???? – dom

ответ

4

Для 0 индексированные номера массива

for(var i = 0; i < arr1.length; i++){ 
    arr3.push(arr2[arr1[i]]) 
} 

Или, так как вы используете 1 индексированный массив

for(var i = 0; i < arr1.length; i++){ 
    arr3.push(arr2[arr1[i] - 1]) 
} 
+0

Выглядит хорошо. :) Может ли использоваться «сращивание»? – Fergoso

+1

Возможно, вы могли бы, я не думаю, что вам нужно, хотя, поскольку это решение кажется достаточно простым – DGS

+0

спасибо. # up-vote – Fergoso

0

Вы можете попробовать что-то вроде этого:

var arr1 = ["2", "3", "1"], 
    arr2 = ["x", "y", "z"], 
    arr3 = []; 
arr3=arr1.map(function(i){return arr2[i-1]}); 
console.log(arr3) 
0

Если значения arr1 не соответствует клавишам, как если arr1 = [50, 4, -2, 999], то вот запутанный ответ:

arr1.map(function(val, key){ return [val, key] }) 
    .sort(function(a,b){ return a[0]-b[0] }) 
    .map(function(a){ return arr2[a[1]] }) 
+0

i get '[" z "," y "," x ", undefined]' Мне нравится ваша методология, но она должна быть '[" y "," z "," x "]'. вы получили те же результаты, что и я. если нет, вы можете исправить ответ. –

Смежные вопросы