簡體   English   中英

jQuery:比較二維數組和一維數組

[英]jQuery: Compare 2D array with 1D array

假設我的代碼中有 2 個 javascript/jQuery arrays。

一個二維數組,如下所示(控制台輸出):

0: {title: 'Freemium', modules: 'Ordering'}
1: {title: 'Standaard', modules: 'Ordering,Invoicing,Cash system'}

一個是標准的一維數組,如下所示(控制台輸出):

['Ordering', 'Invoicing', 'Cash system']

我想比較兩個 arrays 以檢查第二個數組是否與第一個 arrays 中的一個匹配。如果匹配,它需要返回第一個數組的標題列。

換句話說:用戶可以 select 多個模塊,當所有選擇的模塊匹配配置的一個定價計划時,返回定價計划的名稱。

我怎么會go這個呢? 我的代碼中已經准備好了 arrays,我只需要找到一種方法來比較它們並返回第一個數組的標題列。 我找到了一些解決方案來比較兩個 arrays,但從來沒有將 2D 與 1D 數組進行比較。

更新:

所以我的問題可能措辭不佳或技術上不正確。

頁面上添加了不同的計划,如下所示:

<div id="packages">
    <div class="package" data-title="Freemium" data-modules="Ordering"></div>
    <div class="package" data-title="Standaard" data-modules="Ordering,Invoicing,Cash system"></div>
</div>

我正在使用以下 JS 代碼將包“添加”到我的代碼中:

$("#packages .package").each(function(index) {
   var package_title = $(this).data('title');
   var package_modules = $(this).data('modules');
   packages_array.push({"title": package_title, "modules": package_modules});
});

每個由用戶選擇的模塊都添加到這樣的數組中:

$(".modules .module.active").each(function() {    
   modules_array.push($(this).data('title'));
});

(arrays packages_arraymodules_array在我的代碼頂部聲明)

這就是我現在所擁有的,如果有人能指出正確的方向,告訴我如何改進我的代碼以及如何比較兩者 arrays..

您可以首先使用數組join() function,將您的選擇器轉換為逗號分隔的字符串,它們在您的二維數組中使用forEach() function 並將每個模塊與您的新字符串值進行比較

編輯:要考慮未排序的 arrays,您可以先使用sort()對選擇器 arrays 進行排序,然后使用split(',')拆分模塊,對結果數組進行排序,然后對其進行join() ,從而得到兩個可以比較的排序字符串

 let objectArray = [{ title: 'Freemium', modules: 'Ordering' }, { title: 'Standaard', modules: 'Ordering,Invoicing,Cash system' } ] let selectorsArray = ["Ordering", "Invoicing", "Cash system"] let selectorsString = selectorsArray.sort().join() objectArray.forEach((plan) => { let sortedModules = plan.modules.split(",").sort().join() if (sortedModules === selectorsString) console.log("found: " + plan.title) })

暫無
暫無

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

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