javascript - Javascript二维数组包括
问题描述
我有以下 JS,我试图找出 2D 数组的元素是否包含在另一个 2D 数组中。但是,包含似乎不起作用,对于循环中的每个索引,我都会将不匹配记录到控制台。如何使用 2D 数组执行此操作?
deleteLinks.on('click', function(ev){
ev.preventDefault();
var currentHTML = $('.product');
var currentHTMLMap = $('.product').toArray().map(elm => [ $(elm).attr("data-id-product"), $(elm).attr("data-id-product-attribute") ]);
var deleteIndices = [];
$.ajax({
url: this.href,
type: "GET",
dataType: "html",
success: function(data) {
var newHTMLMap = $(data).find(".product").toArray().map(elm => [ $(elm).attr("data-id-product"), $(elm).attr("data-id-product-attribute") ]);
for(i = 0; i < currentHTMLMap.length; i++){
if (!(newHTMLMap.includes(currentHTMLMap[i]))) {
console.log("found mismatch for index " + i);
deleteIndices.push(i);
}
}
for(i = 0; i < deleteIndices.length; i++) {
currentHTML[deleteIndices[i]].remove();
}
}
});
});
我在变量中得到以下数据:
currentHTMLMap: 6,0,2,9,1,1
currentHTMLMap[0]: 6,0
currentHTMLMap[1]: 2,9
currentHTMLMap[2]: 1,1
newHTMLMap: 2,9,1,1
newHTMLMap[0]: 2,9
newHTMLMap[1]: 1,1
解决方案
您可以检查Array#findIndex
和 元素Array#every
。
var array = [[6, 0], [2, 9], [1, 1]],
subset = [[2, 9], [1, 1], [1, 2], [4, 5]];
console.log(subset.map(a => array.findIndex(b => a.every((v, i) => v === b[i]))));
推荐阅读
- reactjs - How to continue a video between Screens with StackNavigation in React Native?
- edit - 如何将符号单独的尾随移动到 COBOL 中的普通十进制字段
- reactjs - 无法在reactjs中安装材料ui
- azure - Azure App Service 应用服务日志 blob 保留不起作用
- python - FormGroup 在 dash-bootstrap-components 版本 1.0.0 中已弃用
- sql - 加入 STRING 与 DECIMAL 的性能(Impala)
- java - Java PdfBox - PDF 签名问题 - 外部签名 - 无效签名 格式错误或此签名中包含的信息有误
- wpf - 如何使用具有流利 nHibernate 的 WPF-Combo-Box 以便在用户更改选择后保存?
- kubernetes - 本地机器上的 Kubernetes PersistentVolume,共享数据
- javascript - 不使用属性访问的函数调用形式时,脏柴不会出错吗?