mirror of
https://github.com/rustwasm/wasm-bindgen.git
synced 2024-12-28 04:22:38 +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)]
|
#[wasm_bindgen(method, getter, structural)]
|
||||||
pub fn length(this: &Array) -> u32;
|
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
|
/// The pop() method removes the last element from an array and returns that
|
||||||
/// element. This method changes the length of the array.
|
/// element. This method changes the length of the array.
|
||||||
///
|
///
|
||||||
|
@ -796,3 +796,37 @@ fn find() {
|
|||||||
)
|
)
|
||||||
.test()
|
.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