数组常用操作

目录

1、创建数组

2、取值、赋值

3、添加新元素

4、删除元素

5、数组的合并、截取

6、数组的排序

7、数组转字符串

8、JQ判断值是否存在于数组

9、数组根据关键字合并

 10、数组展开



1、创建数组

  • var array = new Array();
  • var array = new Array(size);//指定数组的长度
  • var array = new Array(item1,item2……itemN);//创建数组并赋值

2、取值、赋值

  • var item = array[index];//获取指定元素的值
  • array[index] = value;//为指定元素赋值

3、添加新元素

  • array.push(item1,item2……itemN);//将一个或多个元素加入数组,返回新数组的长度
  • array.unshift(item1,item2……itemN);//将一个或多个元素加入到数组的开始位置,原有元素位置自动后移,返回 新数组的长度
  • array.splice(start,delCount,item1,item2……itemN);//从start的位置开始向后删除delCount个元素,然后从start的位置开始插入一个或多个新元素

4、删除元素

  • array.pop();//删除最后一个元素,并返回该元素
  • array.shift();//删除第一个元素,数组元素位置自动前移,返回被删除的元素
  • array.splice(start,delCount);//从start的位置开始向后删除delCount个元素

5、数组的合并、截取

  • array.slice(start,end);//以数组的形式返回数组的一部分,注意不包括 end 对应的元素,如果省略 end 将复制 start 之后的所有元素
  • array.concat(array1,array2);//将多个数组拼接成一个数组

6、数组的排序

  • array.reverse();//数组反转
  • array.sort();//数组排序,返回数组地址


7、数组转字符串

  • array.join(separator);//将数组原因用separator连接起来
  • split() 方法用于把一个字符串分割成字符串数组。 
    stringObject.split(separator,howmany)1 
    separator参数:必需填。字符串或正则表达式,从该参数指定的地方分割 stringObject。  howmany参数:可选。该参数可指定返回的数组的最大长度。如果设置了该参数,返回的子串不会多于这个参数指定的数组。如果没有设置该参数,整个字符串都会被分割,不考虑它的长度。 
  • 数字数组转化为字符串数组
var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
arr.map(String);  //结果: ['1', '2', '3', '4', '5', '6', '7', '8', '9']
  • 字符串数组转化为数字数组
var a = ['1', '2', '3', '4', '5', '6', '7', '8', '9']
a.map(Number);  //结果:[1, 2, 3, 4, 5, 6, 7, 8, 9]

8、JQ判断值是否存在于数组


var mobileArr = ["13", "15", "18"];
var mob = mobile.substr(0, 2);
var rs = $.inArray(mob, mobileArr);
return rs;
不存在返回 -1 存在返回 index

列了这么都就是没有发现根据下标删除数组元素的方法!于是查了一些资料找到了解决方法。
删除数组元素需要扩展Array原型prototype.
一般的数组的下标都是数值型,但是也有字符型的下标
数值型的处理,首先的把下面的代码写出来,是对数组的扩展
Array.prototype.del = function(dx)
{
if(isNaN(dx)||dx>this.length){return false;}
this.splice(dx,1);
}
其次,数值型的直接传递数值的参数即可。例如var arr = ["aa","bb"];arr.del(0);
下面说一下字符型的下标
var arr = [].
arr["aa"] = 1;

9、数组根据关键字合并

	let arr1 = [
		{ id: 1, text: '数组1' },
		{ id: 2, text: '数组2' },
	];
	let arr2 = [
		{ id: 1, title: '最新测试1' },
		{ id: 3, title: '最新测试3' },
	];
	console.log(arrMerge(arr1, arr2, 'id'));
 
  arrMerge(arr1 , arr2 , key )  {
	const combined = arr2.reduce((acc, cur) => {
		const target = acc.find((e) => e[key] === cur[key]);
		if (target) {
			Object.assign(target, cur);
		} else {
			acc.push(cur);
		}
		return acc;
	}, arr1);
	return combined;
};

 打印结果

 10、数组展开

	let arr2 = [1, 2, [3, 5, [6, 7]]];
	console.log(arr2.flat(Infinity));// [1, 2, 3, 5, 6, 7]

对象数组

let arr1: any = [
  		{
  			id: 1,
  			text: '数组1',
  			children: [
  				{ id: 3, text: '数组3' },
  				{ id: 4, text: '数组4' },
  			],
  		},
  		{ id: 2, text: '数组2', children: [] },
  	];
  	//console.log(arr1.flat(), '---------result');
  let arr2=  reduct(arr1)

  //console.log(arr2, '---------result');

  function reduct(arr) => {
      return arr.reduce((sum, value) => {
     return sum.concat(Array.isArray(children) ? [value, ...reduct(children)] : [value]);
      }, []);
    };

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值