簡體   English   中英

在javascript中合並並創建一個獨特的區分大小寫的數組

[英]Merge and create an unique case sensitive array in javascript

這是一個復雜的場景,但會盡量解釋。 我有一個對象或數組和一個數組。 現在我必須將 selectedmodel 值與映射模型進行比較,如果值(不區分大小寫)與該對象匹配,則獲取它的所有值並將其推入所選模型並將兩者結合起來。 希望這個例子能說明我想要達到的目標。

var mappedModels = { 'CC605': ['cc605', 'CC605', 'cC605'], 'TC75X': ['TC75X'] };
var selectedModels = ['CC605', 'tc76'];
var desiredOutput = ["CC605", "tc76", "cc605", "cC605"];

我已經寫了一個解決方案來實現它,但我需要一個更好的代碼在性能方面。 這是解決方案:

function combineModelCases(selectedModels) {
const modelCases = [];
selectedModels.forEach(elm => {
  const existingModels = mappedModels[elm.toUpperCase()];
  if (existingModels) {
    for (const key of existingModels) {
      if (elm.toUpperCase() !== key) {
        modelCases.push(key);
      }
    }
  }
});
return selectedModels.concat(modelCases);

}

這是小提琴

我正在使用打字稿和下划線 js 作為您的參考。 任何幫助都會非常有幫助。

您可以使用flatMapselectedModels每個鍵獲取扁平化的值數組。 然后,創建一個Set以獲得唯一的集合模型。 使用Array.from()將集合轉換為數組。

 const mappedModels = { 'CC605': ['cc605', 'CC605', 'cC605'], 'TC75X': ['TC75X'] }, selectedModels = ['CC605', 'tc76']; const models = selectedModels.flatMap(m => mappedModels[m] || []), unique = Array.from(new Set([...selectedModels, ...models])); console.log(unique)

您可以執行以下操作:

 var mappedModels = { 'CC605': ['cc605', 'CC605', 'cC605'], 'TC75X': ['TC75X'] }; var selectedModels = ['CC605', 'tc76']; var desiredOutput; function combineModelCases(selectedValue){ if(mappedModels.hasOwnProperty(selectedValue)){ desiredOutput = [... new Set([...mappedModels[selectedValue], ...selectedModels])] return desiredOutput; } } console.log(combineModelCases('CC605'));

這是工作演示: https : //jsfiddle.net/wzo4d6uy/2/

暫無
暫無

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

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