iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 2
1
自我挑戰組

利用30分鐘~想一個前端問題系列 第 2

利用30分鐘~想一個前端問題 [Day2] - difference

  • 分享至 

  • xImage
  •  

Returns the difference between two arrays.

Create a Set from b, then use Array.prototype.filter() on a to only keep values not contained in b.

判斷兩個陣列,找出裡面的不一樣的值

const difference = (a, b) => {
  const s = new Set(b);
  return a.filter(x => !s.has(x));
};

EXAMPLES
difference([1, 2, 3], [1, 2, 4]); // [3]

記憶點:

  • new Set() 用法
  • has() 的用法 ,回傳 true 或是 false 來判別元素。

解析:

有兩個陣列做比較時,篩出不一樣的元素,

例如 [1,2,3] [1,2,4] // [3]

// 會挑出以第一組陣列不一樣的元素當作結果。

個人分析:

  1. Set 有點像是陣列 (array),Set 中的元素 (element) 可以是任何資料型態,兩者不同的地方在於 Set 中所有的值都是唯一的 ,不會有重複的值,當你存入重複值 會被忽略。
var mySet = new Set();

mySet.add(1); // Set [ 1 ]
mySet.add(5); // Set [ 1, 5 ]
mySet.add(5); // Set [ 1, 5 ]
mySet.add('some text'); // Set [ 1, 5, 'some text' ]
  1. Set.prototype.has(value) 就是用來判斷 Set 中有沒某個值。
    會回傳布林值。

例如:

var mySet = new Set(['value1', 'value2', 'value3']);

// true
mySet.has('value1');

console.log(mySet.has('value1'))
  1. 判斷輸入的參數

    const s = new Set(b); //先把陣列重複的元素篩出,變成每個值都 獨立的陣列

    再來把第一個陣列 a 用filter()方法 篩出裡面要跟 b陣列 不一樣的元素

參考資料:

MDN:New Set()


上一篇
利用30分鐘~想一個前端問題 [Day1]-前言
下一篇
利用30分鐘~想一個前端問題 [Day3] - includesAll
系列文
利用30分鐘~想一個前端問題30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言