在JavaScript中查找多维数组中的匹配项

3

我想在Javascript中匹配整个数组。 我有一个userInput数组,需要在多维数组中找到匹配的数组并输出匹配结果。

var t1 = [0,0,0];
var t2 = [1,0,0];
var t3 = [0,0,1];
var userInput = [0,0,0];
var configs = [t1, t2, t3];

我正在尝试找到一种方法,将用户输入与其他数组中的一个匹配,并输出匹配的数组。 使用underscore.js,我可以一次找到一个匹配项而不需要循环,但这只返回一个布尔值。

var result = _.isEqual(userInput,t1) returns true

我需要在configs数组中找到与userInput匹配的数组。

我可以嵌套循环来遍历configs,但我不知道如何将其与userInput匹配。

5个回答

1
你可以使用Array#findIndex来查找数组中匹配配置的索引。使用Array#every来查找相等的配置。

var t1 = [0,0,0];
var t2 = [1,0,0];
var t3 = [0,0,1];
var userInput = [0,0,1]; // this will fit t3 (index 2)
var configs = [t1, t2, t3];

var result = configs.findIndex(function(arr) {
  return arr.every(function(value, i) {
    return value === userInput[i];
  });
});

console.log(result);


1
给定输入,您可以使用 Array.prototype.find()Array.prototype.toString() 或者 Array.prototype.join()

var t1 = [0,0,0];
var t2 = [1,0,0];
var t3 = [0,0,1];
var userInput = [0,0,0];
var configs = [t1, t2, t3];

var result = configs.find(arr => arr.join() === userInput.join());

console.log(result);


0

你可以使用一些每个的组合

var t1 = [0,0,0];
var t2 = [1,0,0];
var t3 = [0,0,1];
var userInput = [0,0,0];
var configs = [t1, t2, t3];
var inputPresent = configs.some(a => userInput.every((u,i) => a[i] == u));
console.log(inputPresent);

如果你想知道现有输入的索引,你可以包含一个三目运算符。

var t1 = [0,0,0];
var t2 = [1,0,0];
var t3 = [0,0,1];
var userInput = [0,0,0];
var configs = [t1, t2, t3];
var inputIndex = -1;
configs.some((a,n) => userInput.every((u,i) => a[i] == u)?(inputIndex=n,true):false);
console.log(inputIndex);


0

我会担心可能存在重复的地方。如果您可以编写一个可靠地测试相等性的函数,那么这只是一个过滤器。

var matches = configs.filter(config => _.isEqual(config, userInput));
var match = matches[0];

如果你想要更多地投资于使用库,你可以使用类似 find 的东西。

var match = _.find(configs, config => _.isEqual(config, userInput));

0

这个会有效吗?

var result = _.find(configs, function(t) {
  return _.isEqual(userInput, t);
});

如果您需要知道索引:
var index = -1;
_.some(configs, function(t, idx) {
  if (_.isEqual(userInput, t)) {
    index = idx;
    return true;
  }
});
// index = -1 if not found, else the first index of configs that matches the userInput

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接