JavaScript - 检查数组数组中的数组

时间:2017-12-25 14:14:34

标签: javascript arrays

我有一个由三个数组组成的数组。

我有一个值(数组,' [7,5]')我想通过数组检查。

https://jsfiddle.net/qx4wLf4f/6/

var arrays = [];
var arrayOne = [ [1,3], [2,3], [2,4] ];
var arrayTwo = [ [7,6], [7,5], [7,4] ];
var arrayThree = [ [3,3], [3,2], [2,2] ];
arrays.push( arrayOne, arrayTwo, arrayThree );

function checkArraysForValue( val ){
    if( !$.isArray(val) ){
    $('#result').html('Not Array');
    return false;
  }
  var found = 'not found';
  arrays.forEach(function( item, index ){
    if( item.indexOf( val ) > -1 ){
        found = 'did find';
    }
  });
  $('#result').html(found);
}


checkArraysForValue( [7,5] );

3 个答案:

答案 0 :(得分:2)

针对您的具体情况,只需JSON.stringifyindexOf即可

var isPresent = JSON.stringify( arrays ).indexOf( JSON.stringify( val ) ) != -1;

<强>演示

&#13;
&#13;
var arrays = [];
var arrayOne = [ [1,3], [2,3], [2,4] ];
var arrayTwo = [ [7,6], [7,5], [7,4] ];
var arrayThree = [ [3,3], [3,2], [2,2] ];
arrays.push( arrayOne, arrayTwo, arrayThree );

function checkArraysForValue( val )
{
   //console.log( JSON.stringify( arrays ) );
   //console.log( JSON.stringify( val ) );
   return JSON.stringify( arrays ).indexOf( JSON.stringify( val ) ) != -1 ? "Found" : "Not Found";
}


console.log(checkArraysForValue( [7,5] ));
&#13;
&#13;
&#13;

答案 1 :(得分:0)

function isArrayIdentical(arr1, arr2){
    if(arr1.length !== arr2.length)
    return false;
  for(var i = arr1.length; i--;){
    if(arr1[i] !== arr2[i])
        return false;
  }
  return true;
}

这是您需要使用的功能,我已经为您下面的问题的实施解决方案提供了一个小提琴。 https://jsfiddle.net/2r4y9mr9/

基本上,你也可以将你的样本字符串化,以便在答案中执行字符串匹配,但是如果&#34; 1&#34;那么解决方案将不正确。和1在您的考虑中有所不同。

答案 2 :(得分:0)

array.forEach()

并不像你想象的那样工作。我的jsFiddle在这里开始使用这种方法。我用this解决了您的问题,但效率不高。

var arrays = [];

var arrayOne = [
  [1, 3],
  [2, 3],
  [2, 4]
];
var arrayTwo = [
  [7, 6],
  [7, 5],
  [7, 4]
];
var arrayThree = [
  [3, 3],
  [3, 2],
  [2, 2]
];
arrays.push(arrayOne, arrayTwo, arrayThree);

function isEqual(arr1, arr2) {
  if (arr1.length !== arr2.length)
    return false;
  for (var i = arr1.length; i--;) {
    if (arr1[i] !== arr2[i])
      return false;
  }
  return true;
}

function checkArraysForValue(val) {
  if (!$.isArray(val)) {
    $('#result').html('Not Array');
    return false;
  }
  var val = val;
  var found = 'not found';
  for(var i = 0; i < arrays.length; i++){
    for(var j = 0; j < arrays[i].length; j++){
        if(isEqual(arrays[i][j],val)){
        found = 'did found';
      }
    }
  }
  $('#result').html(found);
}