目录
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]);
}, []);
};