这是我的 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