簡體   English   中英

JavaScript-篩選具有相同元素的數組

[英]JavaScript - Filtering array with identical elements

我正在處理此代碼,需要過濾具有多個相同元素的數組,如下所示;

vacant = [
"A510.4 - 0h 45 m",
"A520.6 - 3h 0 m",
"A250.1 - 3h 0 m",
"A340.1 - 3h 15 m",
"A320.2 - 3h 0 m",
"A240.4 - 4h 0 m",
"A210.3 - 4h 0 m",
"A520.5 - 5h 0 m",
"A250.1 - 6h 0 m",
"A240.4 - 7h 0 m",
"A320.6 - 8h 0 m",
"A340.1 - 8h 0 m"]

uniqueVacant數組中的相同元素是:

A250.1-3h 0 m / A250.1-6h 0 m

A340.1-3h 15 m / A340.1-8h 0 m

A240.4-4h 0 m / A240.4-7h 0 m

我已經從元素中濾除了時間戳記,因此唯一需要做的就是比較元素名稱。

function getName(str) {
  return str.substring(0, str.indexOf('-'));
}

var uniqueVacant = [];
vacant.forEach(function (vacantStr) {
  uniqueVacant.push(getName(vacantStr))
});

結果應如下所示,只將第一個元素保留相同的名稱,並刪除第二個元素,稍后再打印出來。

uniqueVacant = [
"A510.4 - 0h 45 m",
"A520.6 - 3h 0 m",
"A250.1 - 3h 0 m",
"A340.1 - 3h 15 m",
"A320.2 - 3h 0 m",
"A240.4 - 4h 0 m",
"A210.3 - 4h 0 m",
"A520.5 - 5h 0 m",
"A320.6 - 8h 0 m"]

// Removed A250.1 - 6h 0 m, A340.1 - 8h 0 m, A240.4 - 7h 0 m,

請注意,當元素的計時器用盡時,它們將從數組中移出,然后,如果數組中沒有更多相似之處,則具有相同名稱的第二個元素應重新出現在數組中。

每天的相似性也有所不同,有時只有2個相似的元素,而其他日子則可能是8個或更多。

有任何快速有效的方法可以做到這一點嗎?

嘗試使用Array#reduce

 var vacant = [ "A510.4 - 0h 45 m", "A520.6 - 3h 0 m", "A250.1 - 3h 0 m", "A340.1 - 3h 15 m", "A320.2 - 3h 0 m", "A240.4 - 4h 0 m", "A210.3 - 4h 0 m", "A520.5 - 5h 0 m", "A250.1 - 6h 0 m", "A240.4 - 7h 0 m", "A320.6 - 8h 0 m", "A340.1 - 8h 0 m" ] console.log(vacant.reduce((a, b) => { var k = a.map(a => a.split('-')[0]) if (!k.includes(b.split("-")[0])) { a.push(b) k.push(b.split("-")[0]) } return a; }, [])) 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM