如何在 2d 数组中找到 1d 数组
How find 1d array in 2d array
我有一个2d数组(3*3)和一个1d(3)数组。现在我想在列和行的 2d 数组中找到 1d 数组,顺序并不重要。即
A=[
[0,1,2],
[3,4,5],
[6,7,8]
];
我的一维数组是这样的:
t=[7,4,1];
我想要当 1d 数组中的第二个数组(1d) 返回 true 时,现在我不知道这是怎么做的?
为每行 2d 数组创建一个新的 1d 哈希数组。然后哈希源 1d 数组并在 1d 数组而不是 2d 中搜索哈希。
var is_in_there = array_of_hashes.indexOf("source_hash");
我的解决方案非常幼稚,写起来相当无聊。
它涉及有 3 个嵌套循环,并将矩阵的每一行(首先)的每个元素与数组中的元素进行比较,如果找到所有元素,则返回成功,然后另外 3 个嵌套循环将每列与您的向量进行比较。
嗨,
这是我的解决方案。
如果您想尝试,您可以检查小提琴:https://jsfiddle.net/arnaudbertrand/skgo9yay/
var d2 = [
[0, 1, 2],
[3, 4, 5],
[6, 7, 8]
];
var b = [7, 4, 1];
function inArrayWithoutOrder(d2, d1) {
var match = false;
d2.forEach(function (arr) {
var temp = d1.slice(0);
arr.forEach(function (e) {
var i = temp.indexOf(e);
if (i != -1) {
temp.splice(i, 1);
} else {
return false;
}
});
if (temp.length == 0) {
match = true;
}
});
return match;
}
function invertRowColumn(d2) {
var newArray = [];
d2.forEach(function (d1, i) {
d1.forEach(function (e, j) {
if (i == 0) {
newArray[j] = [];
}
newArray[j].push(e);
});
});
return newArray;
}
function inArrayColumnRowWithoutOrder(d2, b){
return inArrayWithoutOrder(d2, b) || inArrayWithoutOrder(invertRowColumn(d2),b);
}
然后你可以使用: inArrayColumnRowWithoutOrder(d2,b)
你可能可以让它看起来更好,但至少它似乎做了你想要的。
相关文章:
- 如何在映射数组中添加换行符
- javascript结合了数组和字典
- 需要帮助设置json数组
- 不能从angular2中的子组件指定父组件中的数组
- 使用JS将数组转换为json对象
- 数组在递归方法中设置为null
- knockoutjs可观察数组
- Javascript-如何读取json文件中的列并将其保存在Javascript数组中
- 将数组从PHP传递到Javascript
- JavaScript数组排序(函数)用于对表行进行排序,而不是排序
- 在函数中添加数组元素的数值
- 无法通过数组映射绑定
- javascript中的数组出错
- 如何在 2d 数组中找到 1d 数组
- 将 2D 数组转换为 1D 数组,但有一些例外
- Javascript-使用1D数组的每6个元素创建2D数组
- 使用javascript查找o(n)时间1D数组中的所有子数组
- 从1d数组创建2d数组
- 将2D JavaScript数组转换为1D数组
- javascript 2D 数组从 2 1D 数组