數(shù)組是Javascript最常見的概念之一繁疤,它為我們提供了處理存儲在其中的數(shù)據(jù)的許多可能性。數(shù)組是Javascript中最基本的主題之一宿稀,你可能在編程開始之初就了解它趁舀,在這篇文章中,我會給你分享一些你可能不知道但是很有用的技巧祝沸,讓我們開始吧矮烹。
1、移除數(shù)組重復項
這是一個非常常見的數(shù)組面試問題罩锐,如何在數(shù)組中提取重復的值奉狈,你可以用new set()達到這個目的,我也愿意分享其兩種的方式涩惑,一個是.from()方法另一個是擴展運算符(...)
var fruits = [“banana”, “apple”, “orange”, “watermelon”, “apple”, “orange”, “grape”, “apple”];
// First method
var uniqueFruits = Array.from(new Set(fruits));
console.log(uniqueFruits); // returns [“banana”, “apple”, “orange”, “watermelon”, “grape”]
// Second method
var uniqueFruits2 = […new Set(fruits)];
console.log(uniqueFruits2); // returns [“banana”, “apple”, “orange”, “watermelon”, “grape”]
很簡單仁期,對吧?
2、替換數(shù)組中的具體值
有時寫代碼的時候跛蛋,會遇到需要替換數(shù)組中的某些具體值熬的,這有一個你以前也許不知道的又好又簡短的方法,我們可以用splice(開始位置赊级,需要移除的值押框,需要添加的值),傳遞這三個參數(shù)指定我們在哪里修改理逊,我們需要更改多個少個值橡伞,以及新的值。
var fruits = [“banana”, “apple”, “orange”, “watermelon”, “apple”, “orange”, “grape”, “apple”];
fruits.splice(0, 2, “potato”, “tomato”);
console.log(fruits); // returns [“potato”, “tomato”, “orange”, “watermelon”, “apple”, “orange”, “grape”, “apple”]
3晋被、沒有.map()的map數(shù)組
可能每個人都知道數(shù)組的map()方法兑徘,但是這有另一個不同的方式用更簡單的代碼實現(xiàn)相同的效果。我們可以用from()方法達到這個目的羡洛。
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); // returns [“John”, “Peter”, “Mark”, “Maria”, “Monica”, “Martha”]
4挂脑、空數(shù)組
你是否有一個包含很多元素的數(shù)組,但是出于某些原因需要對其進行清理翘县,并且您不想一個一個地刪除最域?只需一行代碼即可完成操作。清空一個數(shù)組锈麸,你只需要設置數(shù)組的長度是0镀脂,就這樣。
var fruits = [“banana”, “apple”, “orange”, “watermelon”, “apple”, “orange”, “grape”, “apple”];
fruits.length = 0;
console.log(fruits); // returns []
5忘伞、數(shù)組轉成對象
在某些情況下薄翅,我們經常需要把數(shù)組轉成對象,把數(shù)組轉成對象的一個最快的方式就是用熟知的擴展運算符氓奈。
var fruits = [“banana”, “apple”, “orange”, “watermelon”];
var fruitsObj = { …fruits };
console.log(fruitsObj); // returns {0: “banana”, 1: “apple”, 2: “orange”, 3: “watermelon”, 4: “apple”, 5: “orange”, 6: “grape”, 7: “apple”}
6翘魄、快速創(chuàng)建一個有數(shù)據(jù)的數(shù)組
有時我們創(chuàng)建一個數(shù)組,并且需要用同樣的數(shù)據(jù)填充舀奶,這種情況下暑竟,我們可以用fill()方法,簡單又簡潔育勺。
var newArray = new Array(10).fill(“1”);
console.log(newArray); // returns [“1”, “1”, “1”, “1”, “1”, “1”, “1”, “1”, “1”, “1”, “1”]
7但荤、合并數(shù)組
你知道怎么不用concat()方法來合并數(shù)組嗎?這有一個簡單的方法用一行代碼就可以合并多個數(shù)組涧至,在這種情況下腹躁,可能你已經意識到擴展運算符非常有用
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”]
8、找到兩個數(shù)組的交集
這也是在面試中都可能面臨的最普遍的問題之一南蓬,因為它表明了你是否能夠使用數(shù)組方法以及你的邏輯纺非。找到兩個數(shù)組的交集哑了,我們將用文章前面講到過得方法,為了確保數(shù)組中的值沒有重復的烧颖,將使用filter()方法和includes()最后弱左,我們將得到兩個數(shù)組都存在的值,code如下:
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); // returns [2, 4, 6]
9炕淮、從數(shù)組中刪除false
一開始科贬,我們定義了false,在JavaScript中鳖悠,fasle值有false,0优妙,null乘综,NaN,undefined套硼,現(xiàn)在我們如何從數(shù)組中移除這些false值卡辰,為了實現(xiàn)這個目的,我們可以用filter()方法
var mixedArr = [0, “blue”, “”, NaN, 9, true, undefined, “white”, false];
var trueArr = mixedArr.filter(Boolean);
console.log(trueArr); // returns [“blue”, 9, true, “white”]
10邪意、從數(shù)組中獲取隨機值
有時我們需要從數(shù)組中隨機提取值九妈,為了創(chuàng)造一個簡單的,有效的雾鬼,最簡短的并且保持代碼干凈萌朱,我們可以根據(jù)數(shù)組的長度得到一個隨機數(shù),可以如下:
var colors = [“blue”, “white”, “green”, “navy”, “pink”, “purple”, “orange”, “yellow”, “black”, “brown”];
var randomColor = colors[(Math.floor(Math.random() * (colors.length)))]
11策菜、倒置數(shù)組
當我們需要倒置數(shù)組晶疼,不需要通過寫復雜的循環(huán)和方法,有一種簡單的又憨,只需要一行代碼的翠霍,數(shù)組方法已經為我們把數(shù)組倒置了,讓我們檢查下:
var colors = [“blue”, “white”, “green”, “navy”, “pink”, “purple”, “orange”, “yellow”, “black”, “brown”];
var reversedColors = colors.reverse();
console.log(reversedColors); // returns [“brown”, “black”, “yellow”, “orange”, “purple”, “pink”, “navy”, “green”, “white”, “blue”]
12蠢莺、.lastIndexOf()
在JavaScript中寒匙,有一個有趣的方法能夠允許找到給定元素最后一次出現(xiàn)的下標,例如躏将, 如果我們的數(shù)組中有重復的值锄弱,我們可以找到他最后一次出現(xiàn)的下標,看下代碼:
var nums = [1, 5, 2, 6, 3, 5, 2, 3, 6, 5, 2, 7];
var lastIndex = nums.lastIndexOf(5);
console.log(lastIndex); // returns 9
13耸携、求數(shù)組中所有值得和
另一個在JavaScript工程師面試時經常會被問到的問題棵癣。沒有什么可怕的,用reduce()夺衍,一行代碼就可以解決狈谊。如下:
var nums = [1, 5, 2, 6];
var sum = nums.reduce((x, y) => x + y);
console.log(sum); // returns 14
結論
在這篇文章中,我列出了13個,可以幫助你codeing 并且保持代碼簡短干凈的技巧和竅門河劝,另外壁榕,請記住,您可能需要在Javascript中使用許多不同的技巧赎瞎,以進行探索牌里,不僅涉及數(shù)組,而且涉及不同的數(shù)據(jù)類型务甥。我希望你能喜歡本文中提供的解決方案牡辽,并且你可以用他們提升你的發(fā)開效率。
Have a nice coding!
tricks:竅門
duplicates:重復的
extract:提取
unique:獨特敞临,第一無二
solution:n,解決方式
modification:修改
convert:改造
intersection:馬路口态辛,交集