Array——其他原型方法

length

  1. Array.length是有值的,值为1;
  2. Array.prototype.lengthArray实例的属性,默认值为0;
  3. 范围为 0 到 232-1 的整数;

const longArr = new Array(2**32 - 1); // (4294967295) [empty × 4294967295]
const negativeArr = new Array(-100); // RangeError: Invalid array length

  1. 该属性可读可写。如果指定一个更小的length时,数组会被截断;如果指定一个更大的length时,数组长度被修改,成为包含很多空值的稀疏数组,空值为 undefined;

concat

  1. 定义:合并数组,参数可以是多个,参数如果是数组,会被flat一层再合并,如果是值,直接合并,返回新数组;
  2. 对于参与合并的数组或元素,是浅拷贝,如果是引用类型的,会统一改变。

let num1 = [[1]];
let num2 = [2, [3]];
let num3=[5,[6]];
let obj = {};
console.log(num1.concat(4, num2, num3)); // [[1], 4, 2, [3], 5, [6]]
num2[1].push('a');
console.log(num2.concat(obj)); // [2, [3, 'a'], {name: 'yn'}]
obj.name = 'yn'

copyWithin

  1. 定义:复制数组的一部分到其本身,不会修改数组长度,会替换元素。参数:
    @params {targetIndex} 要替换的目标位置的起始索引,负数逆序;
    @params {startIndex} 要复制部分的起始索引,负数逆序,省略为0, 前闭;
    @params {endIndex} 要复制部分的结束索引, 负数逆序,省略则到数组末尾, 后开;
    @ return 会改变原数组,返回改变后的数组;

let arr = [1, 2, 3, 4, 5];
arr.copyWithin(-2); // [1, 2, 3, 1, 2]
arr; // [1, 2, 3, 1, 2]
[1, 2, 3, 4, 5].copyWithin(-2, -3, -1) // [1, 2, 3, 3, 4]
[1, 2, 3, 4, 5].copyWithin(0, 3) // [4, 5, 3, 4, 5]
let arr1 = [, , 3, 4, 5];
arr1.copyWithin(0, 1) // [empty, 3, 4, 5, 5]

  1. 不止用于数组;

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

fill

  1. 定义:用特定值根据索引填充数组,会修改原数组,并返回修改后的数组。参数:
    @params{value} 用来填充数组元素的值;
    @params{start} 起始索引,默认值0,负数逆序;
    @params{end} 结束索引,默认值length - 1,负数逆序;

[1, 2, 3].fill(4, -3, -2); // [4, 2, 3]
Array(3).fill(4); // [4, 4, 4]
[].fill.call({ length: 3 }, 4); // {0: 4, 1: 4, 2: 4, length: 3}

  1. 引用类型的填充元素是浅拷贝;

let arr = Array(3).fill({})
arr[0].age = 10;
console.log(arr); // [{age: 10},{age: 10},{age: 10}]

  1. 索引超出原数组的部分不修改;

[1, 2, 3].fill(4, NaN, NaN); // [1, 2, 3]
[1, 2, 3].fill(4, 3, 5); // [1, 2, 3]

  1. this不是必须指向数组,可以指向对象;

[].fill.call({length: 3}, 2); // {0: 2, 1: 2, 2: 2, length: 3}

forEach

  1. 定义: 对数组的每一项执行给定的回调,会自动跳过空值,没有返回值。回调函数可以改变原数组。

const arraySparse = [1,3,,7];
let numCallbackRuns = 0;
arraySparse.forEach( function(element){
console.log(element); // 1 3 7
numCallbackRuns++;
});
console.log("numCallbackRuns: ", numCallbackRuns); // 3

reverse

  1. 定义: 颠倒数组中元素顺序,并返回该数组。此方法会改变原数组;

const array1 = ['one', 'two', 'three'];
array1.reverse(); // ["three", "two", "one"]

  1. 颠倒类数组对象

const a = {0: 1, 1: 2, 2: 3, length: 3};
Array.prototype.reverse.call(a);
console.log(a); // {0: 3, 1: 2, 2: 1, length: 3}

sort

  1. 定义:对数组进行排序,会改变原数组,返回值为排序后的数组.
  2. 参数为回调函数:
    如果不传,将把数组里的每个元素隐式转换为字符串,根据它们的unicode点位进行升序排序;
    传入回调,回调函数的参数有两个a和b,返回值的正负决定排列顺序:
    (1)返回值<0,则a排在b之前;
    (2) 返回值>0,则a排在b后;
    (3)返回值=0,则a、b不改变顺序。

const array1 = [1, 30, 4, 21, 100000];
array1.sort();
console.log(array1); // [1, 100000, 21, 30, 4]

const numbers = [4, 2, 5, 1, 3];
numbers.sort((a, b) => a - b);
console.log(numbers); // [1, 2, 3, 4, 5]

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,607评论 6 507
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,239评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,960评论 0 355
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,750评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,764评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,604评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,347评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,253评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,702评论 1 315
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,893评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,015评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,734评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,352评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,934评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,052评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,216评论 3 371
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,969评论 2 355

推荐阅读更多精彩内容