mirror of
https://github.com/rustwasm/wasm-bindgen.git
synced 2024-12-26 19:45:54 +03:00
Merge pull request #453 from dorayakikun/master
Binding for Array.prototype.map()
This commit is contained in:
commit
94d939f4da
10
src/js.rs
10
src/js.rs
@ -216,6 +216,16 @@ extern "C" {
|
||||
#[wasm_bindgen(method, getter, structural)]
|
||||
pub fn length(this: &Array) -> u32;
|
||||
|
||||
/// map calls a provided callback function once for each element in an array,
|
||||
/// in order, and constructs a new array from the results. callback is invoked
|
||||
/// only for indexes of the array which have assigned values, including undefined.
|
||||
/// It is not called for missing elements of the array (that is, indexes that have
|
||||
/// never been set, which have been deleted or which have never been assigned a value).
|
||||
///
|
||||
/// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map
|
||||
#[wasm_bindgen(method)]
|
||||
pub fn map(this: &Array, predicate: &mut FnMut(JsValue, u32, Array) -> JsValue) -> Array;
|
||||
|
||||
/// The pop() method removes the last element from an array and returns that
|
||||
/// element. This method changes the length of the array.
|
||||
///
|
||||
|
@ -796,3 +796,37 @@ fn find() {
|
||||
)
|
||||
.test()
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn map() {
|
||||
project()
|
||||
.file(
|
||||
"src/lib.rs",
|
||||
r#"
|
||||
#![feature(proc_macro, wasm_custom_section)]
|
||||
|
||||
extern crate wasm_bindgen;
|
||||
use wasm_bindgen::prelude::*;
|
||||
use wasm_bindgen::js;
|
||||
use JsValue;
|
||||
|
||||
#[wasm_bindgen]
|
||||
pub fn array_map(array: &js::Array) -> js::Array {
|
||||
array.map(&mut |el, _, _| JsValue::from_f64(el.as_f64().unwrap().sqrt()))
|
||||
}
|
||||
"#,
|
||||
)
|
||||
.file(
|
||||
"test.js",
|
||||
r#"
|
||||
import * as assert from "assert";
|
||||
import * as wasm from "./out";
|
||||
|
||||
export function test() {
|
||||
const numbers = [1, 4, 9];
|
||||
assert.deepStrictEqual(wasm.array_map(numbers), [1, 2, 3]);
|
||||
}
|
||||
"#,
|
||||
)
|
||||
.test()
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user