jquery - jQuery:比较二维数组和一维数组
问题描述
假设我的代码中有 2 个 javascript/jQuery 数组。
一个看起来像这样的二维数组(控制台输出):
0: {title: 'Freemium', modules: 'Ordering'}
1: {title: 'Standaard', modules: 'Ordering,Invoicing,Cash system'}
一个是标准的一维数组,看起来像这样(控制台输出):
['Ordering', 'Invoicing', 'Cash system']
我想比较两个数组以检查第二个数组是否与第一个数组匹配。如果是,则需要返回第一个数组的标题列。
将其置于上下文中:用户可以选择多个模块,当所有选定的模块与配置的定价计划之一匹配时,将返回定价计划的名称。
我该怎么办?我的代码中已经准备好两个数组,我只需要找到一种方法来比较它们并返回第一个数组的标题列。我找到了一些比较两个数组的解决方案,但从来没有一个 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'));
});
(数组packages_array
和modules_array
在我的代码顶部声明)
这就是我现在所拥有的,如果有人能指出我如何改进我的代码以及如何比较两个数组的正确方向..
解决方案
您可以首先使用数组join()函数,将选择器转换为逗号分隔的字符串,它们使用forEach()
二维数组中的函数并将每个模块与新字符串值进行比较
编辑:要考虑未排序的数组,您可以首先使用sort()对选择器数组进行排序,然后使用拆分模块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)
})
推荐阅读
- sql - 陷入 PostgreSQL 搜索查询
- android - 表面控制:@!@! 抛出 TooManySurfacesException [SurfaceView] [Android]
- c# - 如何通过 DLL 将定制的 C++ 数据类型导入 C# 应用程序
- java - 在Android中拖放图像并将它们合并为一个位图
- c# - 应该如何实现 DbContext 和与 DB 的连接来处理负载测试?
- cluster-computing - 我需要使用 VerneMQ 创建多个集群节点,但文档没有指定如何创建集群节点
- javascript - Javascript xmlHttp GET 请求 readyState 使用 AWS 停留在 1
- c++ - 抑制关于 Eigen 的整洁的误报警告
- java - 在 Java 中使用 LinkedHashSet 检查数组中的唯一值
- scala - 在不更改 Spark 属性的情况下进行连接时未广播数据帧的示例