Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/470.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在多维数组中查找匹配项_Javascript_Jquery_Arrays_Multidimensional Array_Underscore.js - Fatal编程技术网

Javascript 在多维数组中查找匹配项

Javascript 在多维数组中查找匹配项,javascript,jquery,arrays,multidimensional-array,underscore.js,Javascript,Jquery,Arrays,Multidimensional Array,Underscore.js,我试图在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]; 我试图找到一种方法,将userInput与其他数组之一匹配,并输出匹配的数组。 使用下划线.js,我可以在不循环的情况下一次找到一个匹配项,但这会返回布尔值 v

我试图在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];
我试图找到一种方法,将userInput与其他数组之一匹配,并输出匹配的数组。 使用下划线.js,我可以在不循环的情况下一次找到一个匹配项,但这会返回布尔值

var result = _.isEqual(userInput,t1) returns true
我需要在configs数组中找到匹配的数组。
我可以嵌套循环以通过配置,但我不知道如何将其与userInput匹配。

您可以使用和的组合

var t1=[0,0,0];
var t2=[1,0,0];
var t3=[0,0,1];
var userInput=[0,0,0];
变量配置=[t1,t2,t3];
var inputPresent=configs.some(a=>userInput.every((u,i)=>a[i]==u));
控制台日志(inputPresent)这行吗

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
可以使用查找数组中匹配配置的索引。用于查找相等的配置

var t1=[0,0,0];
var t2=[1,0,0];
var t3=[0,0,1];
var userInput=[0,0,1];//这将适合t3(索引2)
变量配置=[t1,t2,t3];
var result=configs.findIndex(函数(arr){
返回arr.every(函数(值,i){
返回值===用户输入[i];
});
});

控制台日志(结果)给定输入,您可以使用
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];
变量配置=[t1,t2,t3];
var result=configs.find(arr=>arr.join()==userInput.join());

控制台日志(结果)我会担心可能有重复的地方。如果您可以制作一个能够可靠地测试相等性的函数,那么这只是一个过滤器

var matches = configs.filter(config => _.isEqual(config, userInput));
var match = matches[0];
如果你想投入更多的资金使用图书馆,你可以使用

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