js数组操作技巧

336 阅读2分钟

1、判断数组是否存在一项符合条件

let arr = ['aa', "bb", "cc", 7, 88];
			
console.log(arr.some(item => {
	return (item + "").indexOf("a") > -1;
}));

//true

2、判断数组所有项是否都符合条件

let arr = ['aa', "bb", "cc", 7, 88];
			
console.log(arr.every(item => {
	return (item + "").indexOf("8") > -1;
}));

//false

3、获取数组符合条件的项

let arr = ['aa', "bb", "cc", 7, 88];
			
console.log(arr.filter(item => {
	return (item + "").indexOf("8") > -1;
}));

//[88]

4、操作数组每项

let arr = ['aa', "bb", "cc", 7, 88];
			
console.log(arr.map(item => {
	return item + "%";
}));

//["aa%", "bb%", "cc%", "7%", "88%"]

5、数组各项总和

let arr = [50,60,70, 80];
			
console.log(arr.reduce((total,item) => {
	return total + item;
}));

//260

6、数组去重

let arr = [50, 60, 70, 80, 60, 70, 80, 60, 70, 80, 60, 70, 80];

console.log(arr.filter((item, index, arr) => {
	return arr.indexOf(item) === index;
}));

// [50, 60, 70, 80]

或者

let arr = [50, 60, 70, 80, 60, 70, 80, 60, 70, 80, 60, 70, 80];
			
console.log(new Set(arr));

// [50, 60, 70, 80]

7、数组排序

let arr = [ 60, 70, 80, 60, 70, 80, 60, 70, 80,50, 60, 70, 80,];

console.log(arr.sort((a,b) => b-a));
//b-a为降序,a-b为升序

// [80, 80, 80, 80, 70, 70, 70, 70, 60, 60, 60, 60, 50]

或者

let arr = [ 60, 70, 80, 60, 70, 80, 60, 70, 80,50, 60, 70, 80,];

console.log(arr.sort((a,b) => b-a).reverse());
//b-a为降序,a-b为升序

// [50, 60, 60, 60, 60, 70, 70, 70, 70, 80, 80, 80, 80]

8、对象的浅拷贝

let arr = [ 60, 70, 80, 60, 70, 80, 60, 70, 80,50, 60, 70, 80,];

let newArr = JSON.parse(JSON.stringify(arr));

newArr[0] = 1000;

console.log(arr,newArr);
//arr = [60, 70, 80, 60, 70, 80, 60, 70, 80, 50, 60, 70, 80] 
//newArr = [1000, 70, 80, 60, 70, 80, 60, 70, 80, 50, 60, 70, 80]

9、对象的深拷贝

let copy = function(obj) {
	let newObj = (Array.isArray(obj)) ? [] : {};

	for (k in obj) {
		if (obj.hasOwnProperty(k)) {
			newObj[k] = obj[k]
		} else {
			newObj[k] = copy(obj[k]);
		}
	}

	return newObj;
}


let obj = [{	name: "lv"}, 12, [12, 56]];

let newObj = copy(obj);

newObj[1] = 10000;

console.log(JSON.stringify(obj,null,2),JSON.stringify(newObj,null,2));

//[
//  {
//    "name": "lv"
//  },
//  12,
//  [
//    12,
//    56
//  ]
//] [
//  {
//    "name": "lv"
//  },
//  10000,
//  [
//    12,
//    56
//  ]
//]