js 数组方法

一、【两个数组取并集】

	function union(a, b, k) {
		return a.concat(b.filter(i => (k ? !a.map(i => i[k]).includes(i[k]) : !a.includes(i))))
	}
	let a = [1, 2, 3, 4, 5]
	let b = [1,6]
	union(a, b) 			//[1, 2, 3, 4, 5, 6]
	
	let a1 = [{id:1,name:'zhangsan'},{id:2,name:'lisi'}]
	let b1 = [{id:2,name:'wangwu'},{id:3,name:'zhaoliu'}]
	union(a1,b1,'id');		//[{id: 1, name: "zhangsan"},{id: 2, name: "lisi"},{id: 3, name: "zhaoliu"}]

二、【两个数组取交集】

	function interp(a, b, k) {
	    return a.filter(t => (k ? b.map(i => i[k]).includes(t[k]) : b.includes(t)))
	}
	let c = [1,2,3,4,5];
	let d = [1,2];
	interp(c,d);	//[1,2]
	
	let c1 = [{id:1,name:'zhangsan'},{id:2,name:'lisi'}];
	let d1 = [{id:2,name:'wangwu'},{id:3,name:'liuliu'}];
	interp(c1,d1,'id');			//[{id:2,name:'lisi'}]			
	interp(d1,c1,'id');			//[{id:2,name:'wangwu'}]	

三、【两个数组取差集】

	function except(a, b, k) {
		return [...a, ...b].filter(i => ![a, b].every(t => (k ? t.map(i => i[k]).includes(i[k]) : t.includes(i))))
	}
	let m = [1,2,3]
	let n = [1,2]
	except(m,n)			//[3]
	
	let m1 = [{id:1,name:'zhangsan'},{id:2,name:'lisi'}]
	let n1 = [{id:2,name:'liuliu'},{id:3,name:'wangwu'}]
	except(m1,n1,'id') 	//[{id: 1,name: "zhangsan"},{id: 3, name: "wangwu"}]

四、【数组求和】

	function sum(a, k) {
		return a.reduce((p, c) => p + (k ? c[k] || 0 : c), 0)
	}
	let arrs = [1,2,3]
	sum(arrs);			//6
	
	let arrs1 = [{name:'zhangsan',age:10},{name:'lisi',age:16}];
	sum(arrs1,'age');	//26

五、【数组分组】

	function group(arr, num) {
		return [...Array(Math.ceil(arr.length / num)).keys()].reduce((p, _, i) => (p.push(arr.slice(i * num, (i + 1) * num)), p), [])
	}
	let x = [1,2,3,4,5,6,7,8,9,10]
	group(x,3);			//[[1, 2, 3],[4, 5, 6],[7, 8, 9]]
	group(x,4);			//[[1, 2, 3, 4],[5, 6, 7, 8],[9, 10]]

六、【数组平均数】

	function mean(a, f) {
	    return (f ? a.map(typeof f === 'function' ? f : v => v[f]) : a).reduce((acc, val) => acc + val * 1, 0) / a.length
	}
	console.log(mean([2,4,6,8,10]));	// 6

七、【数组生成】

	function range(min, max) {
	    return Array.from({ length: max - min + 1 }, (_, i) => i + min)
	}
	range(-1,9);	//[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值