【问题标题】:check if subarray is in other array ExtJS检查子数组是否在其他数组 ExtJS
【发布时间】:2018-04-04 22:34:30
【问题描述】:

我想检查一个数组是否包含 ExtJs 中的其他数组 我试过了,但没有成功

if( [2,1] in [1,2,3]){
     console.log("true"); }

我知道我可以手动完成,但是有直接的方法吗

【问题讨论】:

  • 两个数组都保证唯一吗?顺序重要吗?
  • 没有顺序没关系埃文
  • 我看到它不是同一个 Taki
  • @Amor.o 你应该使用 Ext.Array 实用程序对象,看看我的回答

标签: javascript arrays extjs


【解决方案1】:
var arr1=[2,1],
    arr2=[1,2,3];

if(Ext.Array.merge(arr1,arr2).length===arr2.length){
    console.log('HELLO!');
}

如果你用的是Extjs,用这个方法你可以不用函数和cicles就赢了

只需合并数组。

【讨论】:

    【解决方案2】:

    您需要遍历数组以检查值是否在其中:

    function inArray(v, a){
      for(var i=0,l=a.length; i<l; i++){
        if(a[i] === v){
          return true;
        }
      }
      return false;
    }
    function allInArray(t, a){
      for(var i=0,l=t.length; i<l; i++){
        if(!inArray(t[i], a)){
          return false;
        }
      }
      return true;
    }
    var yourArray = [1, 2, 3], tests = [2, 1];
    console.log(allInArray(tests, yourArray));
    console.log(allInArray([2, 4, 1], yourArray));
    
    // another way
    function allIn(t, a){
      return t.length === t.map(x => +a.includes(x)).reduce((n, v) => n+v);
    }
    console.log(allIn(tests, yourArray));
    console.log(allIn([3, 4], yourArray));

    【讨论】:

    • 谢谢你,我已经有了这样的解决方案,但我问是否有直接的解决方案,这意味着使用预定义的功能
    【解决方案3】:

    在 extjs 中,你有 Ext.each 函数来循环遍历数组

    var array_1 = [2,1];
    var array_2 = [1,2,3];
    Ext.each(array_1,function(value_of_arr1){
        if(array_2.indexOf(value_of_arr1) == -1){
            console.log('array_1 value doesnt exist');
            return;
        }else{
            console.log('array_1 value does exist');
            return;
        }
    });
    

    在上面的代码中,-1 是从 if 条件返回的 如果值 在array_2 中找不到array_1

    如果找到值,则返回该值所在的数组索引

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-09-11
      • 1970-01-01
      • 1970-01-01
      • 2021-02-09
      • 1970-01-01
      • 2015-12-08
      • 2017-12-09
      相关资源
      最近更新 更多