[英]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])
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.