使用JavaScript获取特定的子数组

时间:2018-05-31 21:01:43

标签: javascript arrays

假设我有一个数组

var fruits = ["Banana", "Orange", "Lemon", "Apple", "Mango"]

我有另一个相同大小的数组:

var select = [0,1,1,1,0]

如果这是有意义的,我如何获得数组fruits[select] = ["Orange", "Lemon", "Apple"]。这是我可以在其他语言(例如R)中轻松完成的事情,但这在JS中很容易实现吗?

3 个答案:

答案 0 :(得分:10)

Array.prototype.filter将其谓词传递给索引,所以:

beforeEach(() => {
    component = shallow(<ReplyButtons onReply={mockFn} messages={['1','2']}/>);
});

fruits.filter((fruit, i) => select[i])

答案 1 :(得分:0)

不是你想要的方式。但是,下面的内容应该有效,授予语法可能不完全正确。

var x = 0;
var selectedFruits = []
foreach(var bit in select)
{
    if(bit == 1)
       selectedFruits.Add(fruits[x])
     x++
}

答案 2 :(得分:0)

另一种解决方案可能是将select的值移位以进行过滤。这会改变select并需要绑定此数组。

&#13;
&#13;
var fruits = ["Banana", "Orange", "Lemon", "Apple", "Mango"],
    select = [0, 1, 1, 1, 0],
    selected = fruits.filter([].shift.bind(select));
    
console.log(selected);
&#13;
&#13;
&#13;

或者只是没有约束力但thisArgArray#filter

&#13;
&#13;
var fruits = ["Banana", "Orange", "Lemon", "Apple", "Mango"],
    select = [0, 1, 1, 1, 0],
    selected = fruits.filter([].shift, select);
    
console.log(selected);
&#13;
&#13;
&#13;