繁体   English   中英

使用JavaScript获取特定的子数组

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM