1.删除数组的重复项

第一种方式
var fruits = ['banana', 'apple', 'orange', 'apple', 'orange', 'grape', 'watermelon']

var uniqueFruits = new Set(fruits)
console.log(uniqueFruits); // Set {'banana', 'apple', 'orange', 'grape', 'watermelon'}

var uniqueFruits = Array.from(new Set(fruits))
console.log(uniqueFruits); // [ 'banana', 'apple', 'orange', 'grape', 'watermelon' ]

第二种方式
var fruits = ['banana', 'apple', 'orange', 'apple', 'orange', 'grape', 'watermelon']

var uniqueFruits2 = [...new Set(fruits)]
console.log(uniqueFruits2); // [ 'banana', 'apple', 'orange', 'grape', 'watermelon' ]

2.替换数组中的特定值

var usernames = ['蜗牛0', '蜗牛1', '蜗牛2', '蜗牛3', '蜗牛4', '蜗牛5']
usernames.splice(0, 2, '蜗牛替换位置0', '蜗牛替换位置1')
console.log(usernames) // [ '蜗牛替换位置0', '蜗牛替换位置1', '蜗牛2', '蜗牛3', '蜗牛4', '蜗牛5' ]

3.Array.from 达到 .map 的效果

var friends = [
{ name: '小智', age: 22 },
{ name: '张三', age: 23 },
{ name: '李四', age: 24 },
{ name: '王二', age: 25 },
{ name: '麻子', age: 26 },]
var friendsNames = Array.from(friends, ({ name }) => name)
console.log(friendsNames) // [ '小智', '张三', '李四', '王二', '麻子' ]

4.置空数组

var friends = [
{ name: '小智', age: 22 },
{ name: '张三', age: 23 },
{ name: '李四', age: 24 },
{ name: '王二', age: 25 },
{ name: '麻子', age: 26 },]
friends.length = 0
console.log(friends) // []

5.将数组转换为对象

var usernames = ['蜗牛0', '蜗牛1', '蜗牛2', '蜗牛3']
var usernamesObj = { ...usernames }
console.log(usernamesObj) // { '0': '蜗牛0', '1': '蜗牛1', '2': '蜗牛2', '3': '蜗牛3' }

6.用数据填充数组

var array = new Array(10).fill('1')
console.log(array) // [ '1', '1', '1', '1', '1', '1', '1', '1', '1', '1' ]

7.数组合并

var fruits = ['apple', 'orange', 'banana']
var meat = ['beef', 'fish', 'poultry']
var vegetables = ['potato', 'tomato', 'cucumber']
var food = [...fruits, ...meat, ...vegetables]
console.log(food) // [ 'apple', 'orange', 'banana', 'beef', 'fish', 'poultry', 'potato', 'tomato', 'cucumber' ]

8.求两个数组的交集

var num0 = [0, 2, 4, 6, 8, 9]
var num1 = [0, 1, 3, 5, 8, 9]
var jiaoJi = [...new Set(num0)].filter(item => num1.includes(item))
console.log(jiaoJi) // [ 0, 8, 9 ]

9.从数组中删除虚值

var mixedArray = ['1', 0, false, null, '', NaN, 9, undefined, 'apple']
var trueArray = mixedArray.filter(Boolean)
console.log(trueArray) // [ '1', 9, 'apple' ]

10.从数组中获取随机值

var number = [0, 2, 4, 5, 7, 9, 22, 55]
var randomNumber = number[(Math.floor(Math.random() * (number.length)))]
console.log(randomNumber) // 9

11.反转数组

var number = [0, 2, 4, 5, 7, 9, 22, 55]
var numberReverse = number.reverse()
console.log(numberReverse) // [ 55, 22, 9, 7, 5, 4, 2, 0 ]

12.lastIndexOf() 方法

var number = [1, 5, 3, 8, 3, 9, 23, 65, 3, 99, 3, 4]
var lastNumber = number.lastIndexOf(3)
console.log(lastNumber) // 10

13.对数组中的所有值求和

var nums = [1, 5, 2, 6]
var sum = nums.reduce((x, y) => x + y)
console.log(sum) // 14

JS数组精简的十三个技巧的更多相关文章

  1. 13 个 JS 数组精简技巧

    来自 https://juejin.im/post/5db62f1bf265da4d560906ab 侵删 数组是 JS 最常见的一种数据结构,咱们在开发中也经常用到,在这篇文章中,提供一些小技巧,帮 ...

  2. js 数组去重小技巧

    js 数组去重小技巧 Intro 今天遇到一个问题,需要对数据进行去重,想看一下有没有什么比较方便的方法,果然有些收获. Question 问题描述: 我有一个这样的数据: [ { "Pro ...

  3. 【转】天啦噜!原来Chrome自带的开发者工具还能这么用!(提升JS调试能力的10个技巧)

    天啦噜!原来Chrome自带的开发者工具还能这么用! (提升JS调试能力的10个技巧)   Chrome自带开发者工具.它的功能十分丰富,包括元素.网络.安全等等.今天我们主要介绍JavaScript ...

  4. 优化 JS 条件语句的 5 个技巧

    优化 JS 条件语句的 5 个技巧 原创: 前端大全 前端大全 昨天 (给前端大全加星标,提升前端技能) 编译:伯乐在线/Mr.Dcheng http://blog.jobbole.com/11467 ...

  5. js数组方法大全(下)

    # js数组方法大全(下) 记录一下整理的js数组方法,免得每次要找方法都找不到.图片有点多,注意流量,嘻嘻! 本期分享 forEach() map() filer() every() some() ...

  6. 处理 JS中 undefined 的 7 个技巧

    摘要: JS的大部分报错都是undefined... 作者:前端小智 原文:处理 JS中 undefined 的 7 个技巧 Fundebug经授权转载,版权归原作者所有. 大约8年前,当原作者开始学 ...

  7. 小兔JS教程(四)-- 彻底攻略JS数组

    在开始本章之前,先给出上一节的答案,参考答案地址: http://www.xiaotublog.com/demo.html?path=homework/03/index2 1.JS数组的三大特性 在J ...

  8. js数组学习整理

    原文地址:js数组学习整理 常用的js数组操作方法及原理 1.声明数组的方式 var colors = new Array();//空的数组 var colors = new Array(3); // ...

  9. 转→js数组遍历 千万不要使用for...in...

    看到一篇内容还不错,但是排版实在糟糕, 逼死强迫症患者啊,直接拉下去找原文连接,找到了,但是已经消失了···500错误... 第一次因为实在看不下去一篇博客的排版, 为了排版而转载... 转载地址:h ...

随机推荐

  1. 计算机二级-C语言-程序填空题-190110记录-文件写入与文件读出显示

    //给定程序功能是:从键盘输入若干行文本(每行不超过80个字符),写到文件myfile4.txt中,用-1(独立一行)作为字符串输入结束的标志,然后将文件的内容读到显示在屏幕上.文件的读写分别由自定义 ...

  2. maplotlib python 玩具绘图 横向纵向条状图

    from matplotlib import font_manager#解决zh-han图形汉字乱码 my_font = font_manager.FontProperties(fname=" ...

  3. 类型不匹配 java.lang.IllegalArgumentException : argument type mismatch

    异常: 解决: money的类型是 float类型(把0.8改成 0.8f 即可)

  4. leetcode菜鸡斗智斗勇系列(9)--- Range Sum of BST

    1.原题: https://leetcode.com/problems/range-sum-of-bst/ Given the root node of a binary search tree, r ...

  5. 记录我对'我们有成熟的时间复杂度为O(n)的算法得到数组中任意第k大的数'的误解

    这篇博客记录我对剑指offer第2版"面试题39:数组中出现次数超过一半的数字"题解1的一句话的一个小误解,以及汇总一下涉及partition算法的相关题目. 在剑指offer第2 ...

  6. P3376 【模板】网络最大流 dinic详解

    dinic的核心在于分层和多路增广. 分层的意思是,对于图用bfs搜出每一层,避免出现dfs深度过深的情况. 多路增广,利用的是dfs的回溯性质,这样就可以在一个点增广出它的所有流量. #includ ...

  7. Flexconnect部署

    该记录主要用于针对于无线网络中Flexconnect的部署,可能涉及到的有Flexconnect中的组件,如何部署.(注意:在7.2版本以前,Flexconnect叫做HREAP),目前都称作为Fle ...

  8. Nexus-vPC基础实验

    一.实验拓扑: 由于条件有限,使用两个N5K做基本的vPC实验,Peer Keepalive Link使用的是两个Nexus 5K的Mgm0接口. 二.配置步骤:1.先构建vPC domain,并在d ...

  9. 杭电2033 人见人爱A+B

    人见人爱A+B Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Sub ...

  10. Day11 - B - Dice (III) LightOJ - 1248

    设dp_i为已经出现了i面,需要的期望次数,dp_n=0 那么dp_i= i/n*dp_i + (n-i)/n*dp_(i+1) + 1 现在已经i面了,i/n的概率再选择一次i面,(n-i)/n的概 ...