所以在我的列表中我有很多变量,我通过说:
{i = 0, j = 0, walls = [ true, false, true, true], "visited"= true}
{i = 1, j = 0, walls = [ true, false, true, true], "visited"= true}
{i = 2, j = 0, walls = [ true, false, true, true], "visited"= true}
{i = 0, j = 1, walls = [ true, false, true, true], "visited"= true}
{i = 1, j = 1, walls = [ true, false, true, true], "visited"= true}
{i = 2, j = 1, walls = [ true, false, true, true], "visited"= true}
问题是当我有i和j需要的两个数字时,我需要搜索i和j。例如,当i = 2且j = 1时,我需要找到在这种情况下(使用上面的例子)将为5的索引。
我尝试过使用.indexOf()但是没有用。我也尝试过使用.find(),但是也没用。
我不使用jquery。
我无法找到任何解决方案,所以任何帮助将不胜感激。
答案 0 :(得分:0)
使用具有适当对象的数组,您可以使用Array#findIndex
。
如果需要ES5,请使用polyfill。
var data = [{ i: 0, j: 0, walls: [true, false, true, true], visited: true }, { i: 1, j: 0, walls: [true, false, true, true], visited: true }, { i: 2, j: 0, walls: [true, false, true, true], visited: true }, { i: 0, j: 1, walls: [true, false, true, true], visited: true }, { i: 1, j: 1, walls: [true, false, true, true], visited: true }, { i: 2, j: 1, walls: [true, false, true, true], visited: true }];
function find(i, j) {
return data.findIndex(function (a) {
return i === a.i && j === a.j;
});
}
console.log(find(2, 1));
ES5的最低实施
var data = [{ i: 0, j: 0, walls: [true, false, true, true], visited: true }, { i: 1, j: 0, walls: [true, false, true, true], visited: true }, { i: 2, j: 0, walls: [true, false, true, true], visited: true }, { i: 0, j: 1, walls: [true, false, true, true], visited: true }, { i: 1, j: 1, walls: [true, false, true, true], visited: true }, { i: 2, j: 1, walls: [true, false, true, true], visited: true }];
function find(i, j) {
var result = -1;
data.some(function (a, index) {
if (i === a.i && j === a.j) {
result = index;
return true;
}
});
return result;
}
console.log(find(2, 1));
答案 1 :(得分:-1)
假设您的对象有效,并且在列表中将它们存储在数组中。然后,您可以使用for循环并在每次迭代时检查i
和j
属性,如果它们匹配,则返回当前索引i
。
var arr = [
{i : 0, j : 0, walls : [ true, false, true, true], "visited": true},
{i : 1, j : 0, walls : [ true, false, true, true], "visited": true},
{i : 2, j : 0, walls : [ true, false, true, true], "visited": true},
{i : 0, j : 1, walls : [ true, false, true, true], "visited": true},
{i : 1, j : 1, walls : [ true, false, true, true], "visited": true},
{i : 2, j : 1, walls : [ true, false, true, true], "visited": true}
];
function getIndex(I, J) {
for( var i=0; i<arr.length; i++ )
if(arr[i].i == I && arr[i].j == J) return i;
}
console.log(getIndex(2,1))
&#13;