js array属性及方法

  1. arr.length

  2. arr.concat(arr2, arr3, …):参数为一系列数组,不会改变旧数组,返回一个新数组

    var arr = [1, 2, 3];
    arr.concat();	// [1, 2, 3]
    arr.concat(4, 5);	// [1, 2, 3, 4, 5]
    arr.concat([6, 7]);	// [1, 2, 3, 6, 7]
    arr.concat([4, 5], [6, 7, [8, 9]]);	// [1, 2, 3, 4, 5, 6, 7, [8,9]]
    
  3. arr.copyWithin(target, start, end):target表示复制到指定目标索引位置;start和end表示拷贝源的起止索引;start和end均可选,end可以为负;会修改原数组;省略start和end时,默认值分别为0和arr.length

    var arr = [1, 2, 3, 4];
    arr.copyWithin(1, 0, 2);	// [1, 1, 2, 4]
    arr = [1, 2, 3, 4];
    arr.copyWithin(1);	// [1, 1, 2, 3]
    arr = [1, 2, 3, 4];
    arr.copyWithin(2);	// [1, 2, 1, 2]
    arr = [1, 2, 3, 4];
    arr.copyWithin(3);	// [1, 2, 3, 1]
    
    
  4. arr.entries():返回一个数组的迭代对象;

    var arr = ['hello', 'world', '\n'];
    var it = arr.entries();
    it.next().value;	// [0, "hello"]
    it.next().value;	// [1, "world"]
    it.next().vallue;	// [2, "\n"]
    it.next().value;	// undefined
    
  5. array.every(callback(currentValue,index,arr), thisValue):currentValue当前元素值;index可选,当前元素的索引值;arr可选,当前元素所属数组;thisValue当做传递给函数的this使用;不会对空数组进行检测,不会修改原数组

    var arr = [1, 2, 3, 4];
    arr.every(function(cur, index, arr){
    	return cur < 5;
    })	// true
    
  6. array.fill(value, start, end):使用value替换数组中的从数组中start位置到end的元素;该方法会修改原数组

    var arr = [1, 2, 3, 4];
    arr.fill(5, 1, 3);	// [1, 5, 5, 4]
    arr = [1, 2, 3, 4];
    arr.fill(1);		// [1, 1, 1, 1]
    
  7. array.filter(function(currentValue,index,arr), thisValue):参数解析与every()方法类似,不会修改原数组;返回值为满足条件的所有元素的数组集合;

    arr.filter(function (cur, index, arr) {
    	return index > 1;
    })
    
  8. array.find(function(currentValue, index, arr),thisValue):返回满足条件的第一个元素,不会修改原数组

    var arr = [1, 2, 3, 4];
    arr.find(function (cur, index, arr) {
    	return index > 1;
    })								// 3
    
  9. array.findIndex(function(currentValue, index, arr), thisValue):返回满足条件的第一个元素的索引,不会修改原数组

    var arr = [11, 12, 13, 14];
    arr.findIndex(function (cur, index, arr) {
    	return cur > 12;
    })					// 2
    
  10. arr.flat([depth]):数组扁平化,depth参数可选,默认为1,用于控制数组扁平化的层级;

    var arr = [1, [2, 3], [4, [5, 6, [7]]]];
    arr.flat();		// [1, 2, 3, 4, [5, 6, [7]]]
    arr.flat(2);	// [1, 2, 3, 4, 5, 6, [7]]
    arr.flat(3);	// [1, 2, 3, 4, 5, 6, 7]
    
  11. array.forEach(callback(currentValue, index, arr), thisValue):数组中的每个元素都会调用一次callback函数;

    var arr = [11, 12, 13, 14],
    	arr2 = [];
    arr.forEach(function (cur, index, arr) {
    	arr2.push(cur - 10);
    })
    console.log(arr2);	// [1, 2, 3, 4]
    
  12. Array.from(arrayLike[, mapFn[, thisArg]]):将类数组对象转为对象,返回一个新数组;

    var arr = [1, 2, 3, 4];
    Array.from('foo');	// ["f", "o", "o"]
    Array.from(arr);	// [1, 2, 3, 4]
    function foo() {
    	console.log(Array.from(arguments));	
    }
    foo();		// [1, 2, 3, 4]
    var set = new Set(['foo', 'bar', 'baz', 'foo'])	// Set(3) {"foo", "bar", "baz"}
    Array.from(set);	// ["foo", "bar", "baz"]
    Array.from([1, 2, 3], x => x*x);	// [1, 4, 9]
    Array.from({length: 5}, (v, i) => i);	// [0, 1, 2, 3, 4]
    
  13. arr.includes(valueToFind[, fromIndex]):判断数组是否包含某个值,fromIndex表示索引起始位置;

    var arr = [11, 12, 13, 14];
    arr.includes(11);	// true
    arr.includes(11, 1);	// false
    
  14. Array.isArray(item):ES6新增,判断输入item是否为数组;

    Array.isArray(new Uint8Array(32));	// false
    Array.isArray({ __proto__: Array.prototype });	// false
    
  15. arr.indexOf(item, fromIndex):返回数组中第一个item的索引,不存在则返回-1;fromIndex为负认为是相对于数组末尾的偏移,但搜索仍然从头开始;对应有arr.lastIndexOf(item, fromIndex),搜索数组中从末尾搜索的第一个item的索引;

  16. arr.join(combinator):使用连接符combinator将数组或类数组的元素拼接为一个字符串;

  17. arr.keys():返回数组的key

    var arr = ['a', , 'c'];
    console.log([...arr.keys]);	// [0, 1, 2]
    
  18. arr.map(callback(cur, index, arr), thisArg):对每个数组元素调用callback,并返回一个新数组;而arr.forEach()方法则没有返回值;

    var arr = [1, 2, 3];
    arr.map((cur, index, arr) => cur * 2);	// [2, 4, 6]
    
    	
    var map = Array.prototype.map;
    var a = map.call('Hello World', function(x) { 
      return x.charCodeAt(0); 
    });
    a;	// [72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100]
    
  19. arr.push()、arr.pop()、arr.shift()、arr.unshift():数组增删操作;

  20. arr.reduce(callback(accumulator, currentValue[, index[, array]])[, initialValue]):callback回调会在数组的每个元素上执行一次,accumulator为累加器,每次调用的初始值为上一次callback的返回值,第一次如果提供initialValue则为initialValue,否则为数组的第一个元素值;currentValue为当次调用的元素;index及array为可选,分别为当前元素的索引及被操作的数组;initilValue可选,表示累加器的初始值;

    对应有arr.reduceRight()方法;

    function reducer(acc, cur, index, arr) {
    	console.log(index, acc, cur)
    	return acc + cur;
    }
    
    var arr = [1, 2, 3, 4];
    
    arr.reduce(reducer, 10);
    // 0 10 1
    // 1 11 2
    // 2 13 3
    // 3 16 4
    // 20
    arr.reduce(reducer);
    // 1 1 2
    // 2 3 3
    // 3 6 4
    // 10
    
    /* 数组扁平化 */
    var arr = [[1, 2], [3, 4], [5, 6]]
    arr.reduce((acc, cur) => acc.concat(cur), []);	// [1, 2, 3, 4, 5, 6]
    
    /* 统计数组中每个元素出现的次数 */
    var sports = ['basketball', 'baseball', 'football', 'baseball'];
    function counter(balls, ball) {
    	if (ball in balls) {
    		balls[ball]++
    	} else {
    		balls[ball] = 1;
    	}
    	return balls;
    }
    sports.reduce(counter, {});		// {basketball: 1, baseball: 2, football: 1}
    
    /* Polyfill */
    if (!Array.prototype.reduce) {
    	Object.defineProperty(Array.prototype, 'reduce', {
    		value: function (callback) {
    			if (this === null) {
    				throw new TypeError('called on null or undefined');
    			}
    			if (typeof callback !== 'function') {
    				throw new TypeError(callback + ' is not a function');
    			}
    
    			var o = Object(this);
    
    			var len = o.length >>> 0;	// 转为非负整数
    
    			var k = 0;
    			var value;
    
    			// 第一次调用callback
    			if (arguments.length >= 2) { // 存在initialValue
    				value = arguments[1];
    			} else {
    				while (k<len && !(k in o)) {
    					k++;
    				}
    				if (k >= len) {
    					throw new TypeError('empty Array with no initialValue');
    				}
    				value = o[k++];
    			}
    
    			// 后续调用callback
    			while (k < len) {
    				if (k in o) {
    					value = callback(value, o[k], k, o);
    				}
    				k++;
    			}
    			return value;
    		}
    	})
    }
    
    
  21. arr.reverse():数组反转,会修改原数组;

    var arr = [1, 2, 3, 4];
    arr.reverse();	// [4, 3, 2, 1]
    
    var arr = [[1, 2], [3, 4], [5, 6]];
    arr.reverse();	// [[5, 6], [3, 4], [1, 2]]
    
  22. arr.slice([begin[, end]]):begin参数必须,默认为0,不传或传其他不识别类型的值,begin均为0;begin不小于arr.length返回空数组,begin为负从数组末尾开始截取;end可选,默认为arr.length,可以为负,大于arr.length取arr.length;

    该方法不会修改原数组

    var arr = [1, 2, 3, 4];
    arr.slice();		// [1, 2, 3, 4]
    arr.slice(0);		// [1, 2, 3, 4]
    arr.slice(null);	// [1, 2, 3, 4]		
    arr.slice('aaa');	// [1, 2, 3, 4]		
    arr.slice(4);		// []
    arr.slice(-2);		// [3, 4]
    arr.slice(1,3);		// [2, 3]
    arr.slice(1, 5);	// [2, 3, 4]
    arr.slice(0, -1);	// [1, 2, 3]
    arr.slice(1, -3);	// [];		
    
  23. arr.some(callback(element[, index[, array]])[, thisArg]):判断数组中是否存在元素满足判断条件,返回值为布尔类型;

  24. arr.sort([compareFunction(el1, el2)]):数组排序,比较函数为可选参数;默认以每个元素对应的unicode值进行排序;

    Unicode 编码单元(code points)的范围从 0 到 1,114,111(0x10FFFF)。开头的 128 个 Unicode 编码单元和 ASCII 字符编码一样。使用String.prototype.charCodeAt()方法可以查看常见字符对应的unicode编码;数组0对应48,A对应65,a对应97

    var arr = [2, 1, 3, 4, 11, 21];
    arr.sort();		// [1, 11, 2, 21, 3, 4]
    var arr = ['Kobe', 'James', 'Jordan'];
    arr.sort();		// ["James", "Jordan", "Kobe"]
    
    /* 数值排序 */
    var arr = [2, 1, 3, 4, 11, 21];
    arr.sort((x, y) => x-y)		// 升序排列
    arr.sort((x, y) => y-x)		// 降序排列
    
  25. array.splice(start[, deleteCount[, item1[, item2[, …]]]]):数组添加、删除,仅start为必选;deleteCount为删除元素个数,deleteCount为0或负数,则无元素移除;deleteCount省略或大于arr.length-start,start到数组结束的所有元素均被删除;item1/item2等为添加的数据;返回值为被删除元素组成的数组;该方法会修改原数组

    var arr = [1, 2, 3, 4, 11, 21];
    arr.splice(1);	// arr: [1]
    var arr = [1, 2, 3, 4, 11, 21];
    arr.splice(1, 3);	// arr: [1, 11, 21]
    var arr = [1, 2, 3, 4, 11, 21];
    arr.splice(1, 6);	// arr: [1]
    var arr = [1, 2, 3, 4, 11, 21];
    arr.splice(1, 1, 5, 6)	// arr: [1, 5, 6, 3, 4, 11, 21]
    
  26. arr.toString():

    var arr = [1, [2, 3], [4, [5, 6]]];
    arr.toString();		// "1,2,3,4,5,6"
    
  27. arr.values():获取数组项的值;


参考文献:

  1. https://www.runoob.com/jsref/jsref-obj-array.html
  2. https://www.runoob.com/jsref/jsref-entries.html
  3. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map
  4. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce
  5. https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/String/charCodeAt
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
在JavaScript中,array对象是一种特殊的对象,用于存储和操作一组数据。以下是一些array对象的常用方法: 1. push():将一个或多个元素添加到数组的末尾,并返回新数组的长度。 2. pop():从数组的末尾移除并返回最后一个元素。 3. unshift():将一个或多个元素添加到数组的开头,并返回新数组的长度。 4. shift():从数组的开头移除并返回第一个元素。 5. concat():将两个数组连接起来,并返回一个新数组。 6. join():将数组的所有元素连接成一个字符串,并返回该字符串。 7. slice():从原始数组中截取指定范围的元素,并返回一个新数组。 8. splice():在指定索引位置插入或删除元素,并返回删除的元素。 9. indexOf():返回元素在数组中的第一个索引位置,如果不存在,则返回-1。 10. lastIndexOf():返回元素在数组中的最后一个索引位置,如果不存在,则返回-1。 11. forEach():对数组中的每个元素执行指定的操作。 12. map():对数组中的每个元素执行指定的操作,并返回一个新数组。 13. filter():返回满足指定条件的元素组成的新数组。 14. reduce():对数组中的所有元素执行指定的操作,返回一个累计结果。 15. sort():按照升序或降序对数组进行排序。 16. reverse():颠倒数组中元素的顺序。 17. length属性:获取数组的长度。 以上是一些array对象的常用方法,使用这些方法可以方便地对JavaScript中的数组进行操作和处理。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Neil-

你们的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值