簡體   English   中英

如何基於索引數組獲取值數組?

[英]How to get an array of values based on an array of indexes?

我有一組兩個數組。 一個包含一些水果值作為字符串,另一個包含一些隨機數。 在這里,我認為數字數組是水果數組的索引。 給定索引數組中的數字,如何獲得新的水果數組?

樣例代碼:

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

輸出:

resultArr = ["apple", "grapes", "fig"];

使用.map

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

如果要使用_.at()來實現,請使用_.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> 

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

您可以使用for..of循環

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

Array#map工作原理( 文檔

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

您也可以使用Array#filter( 文檔

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)); 
};

或Array#reduce( 文檔

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

使用lodash pullAt

var fruitier = ["apple", "orange", "grapes", "pineapple", "fig", "banana", 
"jackfruit", "pomegranate"];
var indexArr = [0, 2, 4];
var resultArr = _.pullAt(fruitier, indexArr);
console.log(resultArr);
// ["apple", "grapes", "fig"]

<script src="https://cdn.jsdelivr.net/npm/lodash@4.17.11/lodash.min.js"></script>

除了上面對_.at()的建議外,需要注意的主要區別是-此方法會改變輸入數組。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM