首先说的是这个操作数据计算的方法,reduce 语法:
arr.reduce(function(prev,cur,index,arr){ ... }, init)去重例子:var newArr = arr.reduce(function (prev, cur) { prev.indexOf(cur) === -1 && prev.push(cur); return prev;},[])求和例子:var arr = [4,2,3,1,7,8,3,4,3,6,7,8] var sum = arr.reduce(function (prev, cur) { return prev + cur;},0)这个0也就是我们开始计算的第一位初始值,也就是prev的初始值
求最大值例子:var max = arr.reduce(function (prev, cur) { return Math.max(prev,cur)})解释: arr 表示原数组; prev 表示上一次调用回调时的返回值,或者初始值 init; cur 表示当前正在处理的数组元素; index 表示当前正在处理的数组元素的索引,若提供 init 值,则索引为0,否则索引为1; init 表示初始值
数组排序 sort升序例子:
-直接用法 var arr = [2,5,3,1,4,-6,3,5,6,-2,-5] console.info(arr.sort()) - 可以函数式写法 var numbers = [4, 2, 5, 1, 3]; numbers.sort(function(a, b) { return a - b }) console.log(numbers) - 可以ascii字符排 var items = ['résé', 'premier', 'cliché', 'communiqué', 'café', 'adieu'] items.sort(function (a, b) { return a.localeCompare(b) }) console.info(items) - 可以对象进行排序 var items = [ { name: 'Edward', value: 21 }, { name: 'Sharpe', value: 37 }, { name: 'And', value: 45 }, { name: 'The', value: -12 }, { name: 'Magnetic' }, { name: 'Zeros', value: 37 } ]; // sort by value items.sort(function (a, b) { return (a.value - b.value) }) console.info(items) - 还有一种我也在看的方法 // 需要被排序的数组 var list = ['Delta', 'alpha', 'CHARLIE', 'bravo'] // 对需要排序的数字和位置的临时存储 var mapped = list.map(function(el, i) { return { index: i, value: el.toLowerCase() } }) // 按照多个值排序数组 mapped.sort(function(a, b) { return +(a.value > b.value) || +(a.value === b.value) - 1 }) // 根据索引得到排序的结果 var result = mapped.map(function(el){ return list[el.index] }) console.info(result) (该例子涞源:https://www.cnblogs.com/cmy1996/p/9194534.html 感谢博主的分享)降序例子:
var array = [1, 80, 4, 33, 21, 55] array.sort(function (x, y) { return y - x }); console.info(array)数组查值实际业务中很多情况是需要我们判断这个数组中有没有我们想要的值,下面记录一些方法:
let arr = ['something', 'anything', 'nothing', 'anything’] let index = arr.indexOf('nothing');console.log(index) //结果是2 或者 function include_test(fruit) { const redFruits = ['apple', 'strawberry', 'cherry', 'cranberries']; if (redFruits.includes(fruit)) { console.log(redFruits.includes(fruit)); } else { console.log(redFruits.includes(fruit)); } } include_test('apple’) //返回 true 否则返回false如果不存在该值则返回-1
数组查询满足条件的值let numbers = [12, 5, 8, 130, 44] let maxnum = [] let minnum = [] let result = numbers.find(item => { return item > 8 }) let resultmap = numbers.map((item)=>{ console.info(item) if(item > 8){ return maxnum.push(item) }else{ return minnum.push(item) } }) console.log('第一个满足条件的是数字'+result) console.info('所有满足条件的是数字' + maxnum) console.info('所有不满足条件的是数字' + minnum) //将前面的提示去掉就是数组本身的格式,数组连接字符串以后会丢失格式移除数组的某一个值Array.prototype.remove = function(val) { var index = this.indexOf(val); if (index > -1) { this.splice(index, 1); } }用法
let arr = [2,5,4,5,6,7,3,4,2,5,8,1,9,0,3,6,7,5] let succesarr = [] /** * 构造一个移除元素的函数 * @param val */ Array.prototype.remove = function(val) { var index = this.indexOf(val); if (index > -1) { this.splice(index, 1); } }; /** * 将满足条件的值拿到 * @type {any[]} */ let result = arr.map((item,index=0)=>{ if(arr[index + 1] - arr[index] === 1){ return succesarr.push(item,arr[index + 1]) } }) /** * 将最终的数据拿到 * @type {any[]} */ let finresult = succesarr.map((item,index=0)=>{ if(succesarr[index + 1] === succesarr[index]){ return succesarr.remove(succesarr[index]) } }) console.info(succesarr)这些是我们写js的过程中,经常遇到的一些问题,这里总结一下,以后遇到了可以直接拿来使用,喜欢的可以关注一下,鄙人不才,能力有限,写的不对的还请及时联系我,我这边及时纠正,也可以相互交流。谢谢各位大佬!
---来自腾讯云社区的---何处锦绣不灰堆
微信扫一扫打赏
支付宝扫一扫打赏