Это мой код wasm-bindgen:
#[wasm_bindgen]
pub fn iteration(js_array: &JsValue) -> Vec<i32> {
let elements: Vec<Duck> = js_array.into_serde().unwrap();
elements.iter().fold(vec![], |mut acc, duck| {
let id = duck.id.parse::<i32>().unwrap_or(0);
if id % 42 == 0 {
acc.push(id)
}
acc
})
}
Это тот же код JS:
const iterator = (arr) => arr.reduce((acc, _, index) => {
return index % 42 === 0 ? [...acc, index] : acc
}, [])
Но версия wasm-bindgen медленнее в 2 раза. Я понимаю, почему - потому что я использую serde
.
Есть ли более эффективный способ перебора массива объектов в wasm-bindgen