2016-11-04 2 views
3

У меня есть два набора массивов. Один содержит некоторое количество фруктов, другое - с некоторыми случайными числами. Здесь я рассматривал числовые массивы как индексы массива плодов. Итак, как распределять значения массивов фруктов из определенного массива индексов?Как получить определенный массив значений индексов из массива в javascript?

Пример кода,

var resultArr = [] 
var fruitier = ['apple', 'orange', 'grapes', 'pineapple', 'fig', 'banana', 'jackfruit', 'pomegranate']; 
var indexArr = [0, 2, 4]; 

выход,

resultArr = ['apple', 'grapes', 'fig'] 

ответ

4
for(var i = 0; i < indexArr.length; i++) 
    resultArr.push(fruitier[indexArr[i]]); 
5

Использование .map:

var resultArr = indexArr.map(i => fruitier[i]) 
1

Вы можете использовать for..of цикл

for (var key of indexArr) resultArr[resultArr.length] = fruitier[key]; 
0

Массив # работает карта (documentation)

const getFromIndex = (array, indexes) => indexes.map((index) => array[index]); 

Вы можете использовать массив # фильтр тоже (documentation)

const fruitier = ['apple', 'orange', 'grapes', 'pineapple', 'fig', 'banana', 'jackfruit', 'pomegranate']; 
const indexArr = [0, 2, 4]; 

const getFromIndex = (array, indexes) => { 
    return array.filter((element, index) => indexes.includes(index)); 
}; 

Или же массив # уменьшить (documentation)

const getFromIndex = (array, indexes) => { 
    return indexes.reduce((result, i) => result.concat(array[i]), []); 
}; 
5

Если yo и хотят, чтобы добиться того, что с lodash, используйте _.at():

var fruitier = ['apple', 'orange', 'grapes', 'pineapple', 'fig', 'banana', 'jackfruit', 'pomegranate']; 
 
var indexArr = [0, 2, 4]; 
 
var resultArr = _.at(fruitier, indexArr); 
 

 
console.log(resultArr);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.16.6/lodash.min.js"></script>