假设我有一个数组
var fruits = ["Banana", "Orange", "Lemon", "Apple", "Mango"]
我有另一个相同大小的数组:
var select = [0,1,1,1,0]
如果这是有意义的,我如何获得数组fruits[select] = ["Orange", "Lemon", "Apple"]
。这是我可以在其他语言(例如R)中轻松完成的事情,但这在JS中很容易实现吗?
答案 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
并需要绑定此数组。
var fruits = ["Banana", "Orange", "Lemon", "Apple", "Mango"],
select = [0, 1, 1, 1, 0],
selected = fruits.filter([].shift.bind(select));
console.log(selected);
&#13;
或者只是没有约束力但thisArg
为Array#filter
var fruits = ["Banana", "Orange", "Lemon", "Apple", "Mango"],
select = [0, 1, 1, 1, 0],
selected = fruits.filter([].shift, select);
console.log(selected);
&#13;