[英]Get specific subarray using JavaScript
假设我有一个数组
var fruits = ["Banana", "Orange", "Lemon", "Apple", "Mango"]
我有另一个相同大小的数组:
var select = [0,1,1,1,0]
如果这是有道理的,如何获得数组fruits[select] = ["Orange", "Lemon", "Apple"]
。 这是我可以使用其他某些语言(例如R)轻松实现的功能,但是在JS中可以轻松实现吗?
Array.prototype.filter
传递其谓词一个索引,因此:
fruits.filter((fruit, i) => select[i])
let fruits = ["Banana", "Orange", "Lemon", "Apple", "Mango"]; let select = [0, 1, 1, 1, 0]; let result = fruits.filter((fruit, i) => select[i]); console.log(result);
不是您想要的方式。 但是,如果语法可能不完全正确,则类似下面的内容应该可以工作。
var x = 0;
var selectedFruits = []
foreach(var bit in select)
{
if(bit == 1)
selectedFruits.Add(fruits[x])
x++
}
另一个解决方案可能是将select
的值移位以进行过滤。 这会使select
发生突变,并且需要此数组的绑定。
var fruits = ["Banana", "Orange", "Lemon", "Apple", "Mango"], select = [0, 1, 1, 1, 0], selected = fruits.filter([].shift.bind(select)); console.log(selected);
或者只是没有绑定但是带有Array#filter
thisArg
var fruits = ["Banana", "Orange", "Lemon", "Apple", "Mango"], select = [0, 1, 1, 1, 0], selected = fruits.filter([].shift, select); console.log(selected);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.