编程技术文章分享与教程

网站首页 > 技术文章 正文

Javascript中数组的常用方法 js 数组用法

hmc789 2024-11-10 10:37:44 技术文章 2 ℃

在Javascript中,数组是很常用的类型,也是经常使用到的类型之一。熟练掌握数组的操作方法,会在工作中,更加得心应手。


声明,初始化一个空的数组

  • 声明一个没有长度的空数组
let aa = [];
  • 声明一个长度为5的空数组
let aa = Array(5);  // [empty * 5] 
  • 声明一个长度为5,内容为''的数组
let aa = Array(5).fill('');  // ['', '', '', '', '']

计算数组的总和,最大,最小值

计算数组的总和或者最值,一般情况下,会通过for循环的方式计算。但是数组中提供的reduce()方法,是可以快速计算的。

  • 总和
let aa = [ 2, 3, 1, 6 ];
aa.reduce( (a, b) => a+ b );  // 12
  • 最大值
let aa = [ 2, 3, 1, 6 ];
aa.reduce( (a, b) => a > b ? a  :  b);  // 6
  • 最小值
let aa = [ 2, 3, 1, 6 ];
aa.reduce( (a, b) => a < b ? a  :  b);  // 1

注:reduce()方法还有更强大的功能,详情可以参考Array.prototype.reduce() - JavaScript | MDN

对数组的排序

对数组的排序主要分为对字符串数组的排序,对数字数组的排序,对对象数组的排序

  • 字符串数组的排序
let aa = ['jk', 'gh', 'as'];

<!-- 正序 -->
aa.sort();  // ['as', 'gh', 'jk']

<!-- 返序 -->
aa.reverse(); // ['jk', 'gh', 'as']
  • 数字数组的排序
let aa = [2, 5, 3, 7];

<!-- 正序 -->
aa.sort((a, b) => a - b)  // [2, 3, 5, 7]

<!-- 返序 -->
aa.sort((a, b) => b - a); // [7, 5, 3, 2]
  • 对象数组的排序
let aa = [ 
    { first_name: 'Lloer', last_name: 'Jamf'     },
    { first_name: 'Pig',    last_name: 'Bodine'   },
    { first_name: 'Pirate', last_name: 'Prentice' }
];

aa.sort((a, b) => a.last_name.localeCompare(b.last_name));
<!--
    输出:
    (3) [{…}, {…}, {…}]
    0: {first_name: "Pig", last_name: "Bodine"}
    1: {first_name: "Lloer", last_name: "Jamf"}
    2: {first_name: "Pirate", last_name: "Prentice"}
    length: 3
-->
<!-- a.localeCompare(target) 用本地特定的顺序来比较两个字符串 -->

删除重复值

在一个数组中,常常会有重复值,但是有时又不需要这些重复值,则可以使用以下的方法,效率比较高

    • 使用ES6中的Set降重
let aa = [1, 2, 3, 1, 5, 2];
Array.from(new Set(aa)); // [1, 2, 3, 5]
// or
[...new Set(aa)] // [1, 2, 3, 5]
// from()方法将一个类数组转化为一个数组
    • 使用filter(),indexOf()组合的方式
let aa = [1, 2, 3, 1, 5, 2];
aa.filter((item, idx, arr) => arr.indexOf(item) === idx); // [1, 2, 3, 5]

打乱数组

随机打乱数组,可以使用Math.random()方法

let aa = [2,4,1,6,4]
aa.sort(() => {
    return Math.random() - 0.5;
})
// 会随意打乱数组
// (5) [4, 2, 6, 4, 1]
// (5) [6, 2, 4, 1, 4]

过滤一些虚假值

在数组中常会有0,数字,undefine,null,fasle,"",''等类型,使用下面的方法就可以很容易的过滤出虚假值

let aa = [1, 2, null, true, false, '', null];
aa.filter(Boolean);  // [1, 2, true]

Tags:

标签列表
最新留言