mirror of
https://github.com/fluencelabs/assemblyscript
synced 2025-06-12 22:41:27 +00:00
Add Array#fill (#250)
This commit is contained in:
@ -99,6 +99,25 @@ export class Array<T> {
|
||||
if (isManaged<T>()) __gc_link(changetype<usize>(this), changetype<usize>(value)); // tslint:disable-line
|
||||
}
|
||||
|
||||
fill(value: T, start: i32 = 0, end: i32 = i32.MAX_VALUE): this {
|
||||
var buffer = this.buffer_;
|
||||
var len = this.length_;
|
||||
start = start < 0 ? max(len + start, 0) : min(start, len);
|
||||
end = end < 0 ? max(len + end, 0) : min(end, len);
|
||||
if (sizeof<T>() == 1) {
|
||||
memory.fill(
|
||||
changetype<usize>(buffer) + start + HEADER_SIZE,
|
||||
<u8>value,
|
||||
<usize>(end - start)
|
||||
);
|
||||
} else {
|
||||
for (; start < end; ++start) {
|
||||
storeUnsafe<T,T>(buffer, start, value);
|
||||
}
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
includes(searchElement: T, fromIndex: i32 = 0): bool {
|
||||
var length = this.length_;
|
||||
if (length == 0 || fromIndex >= length) return false;
|
||||
|
1
std/assembly/index.d.ts
vendored
1
std/assembly/index.d.ts
vendored
@ -436,6 +436,7 @@ declare class Array<T> {
|
||||
length: i32;
|
||||
/** Constructs a new array. */
|
||||
constructor(capacity?: i32);
|
||||
fill(value: T, start?: i32, end?: i32): this;
|
||||
every(callbackfn: (element: T, index: i32, array?: Array<T>) => bool): bool;
|
||||
findIndex(predicate: (element: T, index: i32, array?: Array<T>) => bool): i32;
|
||||
includes(searchElement: T, fromIndex?: i32): bool;
|
||||
|
1
std/portable/index.d.ts
vendored
1
std/portable/index.d.ts
vendored
@ -247,6 +247,7 @@ declare class Array<T> {
|
||||
[key: number]: T;
|
||||
length: i32;
|
||||
constructor(capacity?: i32);
|
||||
fill(value: T, start?: i32, end?: i32): this;
|
||||
every(callbackfn: (element: T, index: i32, array?: Array<T>) => bool): bool;
|
||||
findIndex(predicate: (element: T, index: i32, array?: Array<T>) => bool): i32;
|
||||
includes(searchElement: T, fromIndex?: i32): bool;
|
||||
|
Reference in New Issue
Block a user