mysql cbrt函数_JS array copyWithin()

copyWithin() 方法浅复制数组的一部分到同一数组中的另一个位置,并返回它,不会改变原数组的长度。var array1 = ['a', 'b', 'c', 'd', 'e'];

// copy to index 0 the element at index 3

console.log(array1.copyWithin(0, 3, 4));

// expected output: Array ["d", "b", "c", "d", "e"]

// copy to index 1 all elements from index 3 to the end

console.log(array1.copyWithin(1, 3));

// expected output: Array ["d", "d", "e", "d", "e"]

语法arr.copyWithin(target[, start[, end]])

参数

target

0 为基底的索引,复制序列到该位置。如果是负数,target 将从末尾开始计算。

如果 target 大于等于 arr.length,将会不发生拷贝。如果 target 在 start 之后,复制的序列将被修改以符合 arr.length。

start

0 为基底的索引,开始复制元素的起始位置。如果是负数,start 将从末尾开始计算。

如果 start 被忽略,copyWithin 将会从0开始复制。

end

0 为基底的索引,开始复制元素的结束位置。copyWithin 将会拷贝到该位置,但不包括 end 这个位置的元素。如果是负数, end 将从末尾开始计算。

如果 end 被忽略,copyWithin 方法将会一直复制至数组结尾(默认为 arr.length)。

返回值

改变后的数组。

描述

参数 target、start 和 end 必须为整数。

如果 start 为负,则其指定的索引位置等同于 length+start,length 为数组的长度。end 也是如此。

copyWithin 方法不要求其 this 值必须是一个数组对象;除此之外,copyWithin 是一个可变方法,它可以改变 this 对象本身,并且返回它,而不仅仅是它的拷贝。

copyWithin 就像 C 和 C++ 的 memcpy 函数一样,且它是用来移动 Array 或者 TypedArray 数据的一个高性能的方法。复制以及粘贴序列这两者是为一体的操作;即使复制和粘贴区域重叠,粘贴的序列也会有拷贝来的值。

copyWithin 函数被设计为通用式的,其不要求其 this 值必须是一个数组对象。

copyWithin 是一个可变方法,它不会改变 this 的长度 length,但是会改变 this 本身的内容,且需要时会创建新的属性。

例子let numbers = [1, 2, 3, 4, 5];

numbers.copyWithin(-2);

// [1, 2, 3, 1, 2]

numbers.copyWithin(0, 3);

// [4, 5, 3, 4, 5]

numbers.copyWithin(0, 3, 4);

// [4, 2, 3, 4, 5]

numbers.copyWithin(-2, -3, -1);

// [1, 2, 3, 3, 4]

[].copyWithin.call({length: 5, 3: 1}, 0, 3);

// {0: 1, 3: 1, length: 5}

// ES2015 Typed Arrays are subclasses of Array

var i32a = new Int32Array([1, 2, 3, 4, 5]);

i32a.copyWithin(0, 2);

// Int32Array [3, 4, 5, 4, 5]

// On platforms that are not yet ES2015 compliant:

[].copyWithin.call(new Int32Array([1, 2, 3, 4, 5]), 0, 3, 4);

// Int32Array [4, 2, 3, 4, 5]

Polyfillif (!Array.prototype.copyWithin) {

Array.prototype.copyWithin = function(target, start/*, end*/) {

// Steps 1-2.

if (this == null) {

throw new TypeError('this is null or not defined');

}

var O = Object(this);

// Steps 3-5.

var len = O.length >>> 0;

// Steps 6-8.

var relativeTarget = target >> 0;

var to = relativeTarget < 0 ?

Math.max(len + relativeTarget, 0) :

Math.min(relativeTarget, len);

// Steps 9-11.

var relativeStart = start >> 0;

var from = relativeStart < 0 ?

Math.max(len + relativeStart, 0) :

Math.min(relativeStart, len);

// Steps 12-14.

var end = arguments[2];

var relativeEnd = end === undefined ? len : end >> 0;

var final = relativeEnd < 0 ?

Math.max(len + relativeEnd, 0) :

Math.min(relativeEnd, len);

// Step 15.

var count = Math.min(final - from, len - to);

// Steps 16-17.

var direction = 1;

if (from < to && to < (from + count)) {

direction = -1;

from += count - 1;

to += count - 1;

}

// Step 18.

while (count > 0) {

if (from in O) {

O[to] = O[from];

} else {

delete O[to];

}

from += direction;

to += direction;

count--;

}

// Step 19.

return O;

};

}

规范

参见

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1. 数值函数:abs、ceil、floor、round、trunc、sqrt、cbrt、sign、exp、ln、log、power、random、setseed 2. 字符串函数:concat、lower、upper、substring、trim、replace、split_part、length、position、overlay、substring_index、initcap、translate 3. 日期时间函数:now、current_date、current_time、current_timestamp、age、date_trunc、date_part、extract、timezone、interval、make_interval、make_timestamp、make_date、to_char、to_date、to_timestamp 4. 聚合函数:sum、avg、count、max、min、variance、stddev、corr、covar_pop、covar_samp、regr_slope、regr_intercept、regr_count、regr_r2、regr_avgx、regr_avgy、regr_sxx、regr_sxy、regr_syy 5. 数组函数array_length、array_dims、array_upper、array_lower、array_to_string、unnest、array_agg、array_cat、array_append、array_prepend、array_replace、array_remove、array_position、array_positions、array_ndims、array_fill 6. JSON函数:json_object、json_array、json_build_object、json_build_array、json_typeof、json_extract_path、jsonb_pretty、jsonb_typeof、jsonb_array_length、jsonb_each、jsonb_each_text、jsonb_agg、json_populate_record、json_populate_recordset、json_strip_nulls 7. 其他函数:case、coalesce、nullif、greatest、least、nvl、decode、encode、md5、sha256、pg_sleep、pg_backend_pid、pg_cancel_backend、pg_terminate_backend、pg_advisory_lock、pg_advisory_lock_shared、pg_advisory_unlock、pg_advisory_unlock_shared、pg_column_size、pg_typeof、pg_get_userbyid、pg_trigger_depth、pg_try_advisory_lock、pg_try_advisory_lock_shared、pg_try_advisory_unlock、pg_try_advisory_unlock_shared、pg_relation_size、pg_total_relation_size、pg_indexes_size、pg_total_indexes_size、pg_tablespace_size、pg_database_size、pg_total_relation_size

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值