译者:道奇
做者:Duomly
原文:13 useful JavaScript array tips and tricks you should knowjavascript
数组是JavaScript中最多见的概念了,它为JavaScript的内部数据存储提供了不少可能性,考虑到在编程之初,数组是JavaScript最基础的主题之一,在这篇文章中,我会带来一些你可能不知道可是很是有用的小技巧!下面让咱们开始。java
怎样从JavaScript数组中提取惟一值,这是很是常见的JavaScript面试题,这个问题的即快速又简单的解决方法是使用new Set()方法。有两种途径能够作到,一种是经过.from() ,另一种是使用扩展运算符(...)。面试
var fruits = ["banana", "apple", "orange", "watermelon", "apple", "orange", "grape", "apple"];
// 第一种方法
var uniqueFruits = Array.from(new Set(fruits));
console.log(uniqueFruits);
// 返回 ["banana", "apple", "orange", "watermelon", "grape"]
// 第二种方法
var uniqueFruits2 = […new Set(fruits)];
console.log(uniqueFruits2);
// 返回["banana”, "apple", "orange", "watermelon", "grape"] 复制代码
是否是很简单?编程
有时会须要替换数组中指定的值,有一种你可能还不知道的简单方法能够作到,为此,可使用.splice(开始位置,移除的值,添加的值),而后传入三个参数,参数指定了从哪里开始修改,要修改多少个值和要添加的新值。数组
var fruits = ["banana”, "apple", "orange", "watermelon", "apple", "orange", "grape","apple"]; fruits.splice(0, 2, "potato", "tomato"); console.log(fruits); // 返回["potato", "tomato", "orange", "watermelon", "apple", "orange", "grape","apple"] 复制代码
可能全部人都知道数组的.map()方法,另外有种不一样的解决方法能够达到相似的效果而且代码也很干净,可使用.from()方法达到目的。bash
var friends = [
{ name: 'John', age: 22 },
{ name: 'Peter', age: 23 },
{ name: 'Mark', age: 24 },
{ name: 'Maria', age: 22 },
{ name: 'Monica', age: 21 },
{ name: 'Martha', age: 19 },
]
var friendsNames = Array.from(friends, ({name}) => name);
console.log(friendsNames);
//返回 ["John", "Peter", "Mark", "Maria", "Monica", "Martha"]
复制代码
有时候须要将有元素的数组清空,但不想一个一个移除它们,能够经过一行代码很简单的作到。清空数组只须要将数组的长度设置为0,这样就能够了。app
var fruits = ["banana”, "apple", "orange", "watermelon", "apple", "orange", "grape","apple"]; fruits.length = 0; console.log(fruits); // 返回 [] 复制代码
有时候咱们碰巧有个数组,但出于一些目的,须要一个带数据的对象,最快的方式就是使用扩展运算符(...)将数组直接转换成对象。dom
var fruits = ["banana","apple", "orange", "watermelon"];
var fruitsObj = { …fruits };
console.log(fruitsObj);
//返回{0: "banana", 1: "apple", 2: "orange", 3: "watermelon", 4: "apple", 5: "orange", 6: "grape", 7: "apple"}
复制代码
有时候咱们建立了数组,而后要填充一些数据,或者须要一个有值的数组,这种状况下.fill()方法能够轻松解决。函数
var newArray = new Array(10).fill("1");
console.log(newArray);
// 返回 ["1", "1", "1", "1", "1", "1", "1", "1", "1", "1"]
复制代码
若是不用.concat()方法你知道怎样将多个数组合并为一个吗?有用一行代码就能将任意数量的数组合并为一个的简单方法。你可能已经知道,扩展运算符(...)在处理数组上很是有用,在这种场景下也同样。ui
var fruits = ["apple", "banana", "orange"];
var meat = ["poultry", "beef", "fish"];
var vegetables = ["potato", "tomato", "cucumber"];
var food = […fruits, …meat, …vegetables];
console.log(food);
// ["apple", "banana", "orange","poultry", "beef", "fish","potato", "tomato", "cucumber"]
复制代码
这个一样也是Javascript面试中最受欢迎的挑战之一,由于它展现了你是否可使用数组方法以及你的逻辑是什么。为了找到两个数组的交集,将使用前面已经介绍的方法,为了确保检查的数组中没有重复值,咱们将使用.filter方法和.includes方法。最后会获得一个数组,它有两个数组中都存在的值。检查代码:
var numOne = [0, 2, 4, 6, 8, 8];
var numTwo = [1, 2, 3, 4, 5, 6];
var duplicatedValues = […new Set(numOne)].filter(item => numTwo.includes(item));
console.log(duplicatedValues); // 返回 [2, 4, 6]
复制代码
首先,定义一下假值。在JavaScript中,假值有false, 0, "", null, NaN, undefined。如今要将这些值从指定的数组中移除,为此,咱们将使用.filter()方法。
var mixedArr = [0, "blue", "", NaN, 9, true, undefined, "white", false];
var trueArr = mixedArr.filter(Boolean);
console.log(trueArr); // 返回 ["blue", 9, true, "white"]
复制代码
有时候,咱们须要随机从数组中选择一个值,为了使用简短、快速而且保持代码简洁的方式,能够根据数组的长度获取随机索引值,看一下代码:
var colors = ["blue", "white", "green", "navy", "pink", "purple", "orange"];
var randomColor = colors[(Math.floor(Math.random() * (colors.length)))]
复制代码
当咱们须要翻转数组时不须要经过复杂的循环和函数来建立它,有一种简单的数组方法能帮咱们作到,而且只要一行代码,就能反转数组。下面就检查一下:
var colors = ["blue", "white", "green", "navy", "pink", "purple", "orange"];
var reversedColors = colors.reverse();
console.log(reversedColors);
// returns ["orange", "purple", "pink", "navy", "green", "white", "blue"]
复制代码
在JavaScript中,有一个有趣的方法,它容许查找指定元素最后一次出现的索引值,例如,若是数组有重复值,能够找到它最后出现的位置,看例子:
var nums = [1, 5, 2, 6, 3, 5, 2, 3, 6, 5, 2, 7];
var lastIndex = nums.lastIndexOf(5);
console.log(lastIndex); // 返回 9
复制代码
这是另一个在面试开发工程师时常常碰到的挑战,没什么可怕的,可使用.reduce方法一行代码就能够解决,看代码:
var nums = [1, 5, 2, 6];
var sum = nums.reduce((x, y) => x + y);
console.log(sum); // 返回 14
复制代码
在这篇文章中,我给出了13个技巧帮助你编写简洁的代码,一样记住JavaScript中还有不少值得探索的不一样技巧,不只是关于数组的,还有其余数据类型的,我但愿你能喜欢这篇文章中提供的这些解决方法,你可使用它们来改进开发过程。
祝coding愉快!