【问题标题】:Compare two arrays and set an if else比较两个数组并设置 if else
【发布时间】:2013-08-10 10:57:40
【问题描述】:

我需要比较两个数组(A 和 B),对于 A 中也属于 B 的元素,我需要设置一个 if 语句。只是为了更好地解释我:

if (elementOfArrayA belong AlsoToarrayB) {
        //do something
    }else{
        //do something else
    }

有人可以帮助我吗? 谢谢

【问题讨论】:

    标签: ios arrays compare


    【解决方案1】:

    NSArray 有一个名为 containsObject: 的实例方法正是为此而设的。

    如需进一步说明,请查看this

    【讨论】:

      【解决方案2】:

      使用以下代码比较两个数组:

          NSArray *array1 = [[NSArray alloc] initWithObjects:@"a",@"b",@"c",nil];
          NSArray *array2 = [[NSArray alloc] initWithObjects:@"a",@"d",@"c",nil];
      
           for(int i = 0;i<[array1 count];i++)
              {
                  for(int j= 0;j<[array2 count];j++)
                  {
                      if([[array1 objectAtIndex:i] isEqualToString:[array2 objectAtIndex:j]])
                      {
      
                      }  else {
      
                      }
                  }
              }
      

      【讨论】:

      • 如果表格中显示的数组的一个元素也属于另一个数组,我需要这个来在自定义 tableviewcell 内的按钮上设置不同的图像,但这种方法似乎对我不起作用,和我的应用崩溃
      【解决方案3】:

      比较两个数组:

      if([arrayA isEqualToArray:arrayB]){
      //the two arrays A and B are equals
      }
      

      上面的代码将测试两个数组的所有元素以检查它们是否满足isEqual 测试,因此无需for 循环数组。

      如果要检查arrayA的元素是否包含在arrayB中,请使用以下方法:

      id firstCommonObject = [arrayA firstObjectCommonWithArray:arrayB];
      
      if(firstCommonObject != nil){
        //a common object between arrayA and arrayB has been found
      
      }else{
        //no common objects between both arrays
      }
      

      【讨论】:

      • 如果表格中显示的数组的一个元素也属于另一个数组,我需要这个来在自定义 tableviewcell 内的按钮上设置不同的图像,但这种方法似乎对我不起作用
      【解决方案4】:
      // Method 1 - Simplest method to solve above problem (Use NSArray's containsObject method)
      NSArray *array1 = [[NSArray alloc] initWithObjects:@"a",@"b",@"c",@"e", nil];
      NSArray *array2 = [[NSArray alloc] initWithObjects:@"a",@"d",@"c",@"f", nil];
      
      for(id i in array1){
          if ([array2 containsObject:i]) {
              // do something
          }
          else {
              // do something else
          }
      }
      
      // Method 2 - Another method (Use NSString's isEqualToString method)
      NSArray *array1 = [[NSArray alloc] initWithObjects:@"a",@"b",@"c",@"e", nil];
      NSArray *array2 = [[NSArray alloc] initWithObjects:@"a",@"d",@"c",@"f", nil];
      
      for(id i in array1){
          for(id j in array2){
              if ([i isEqualToString:j]) {
                  // do something
              }
              else {
                  //do something else
              }
          }
      }
      

      【讨论】:

        【解决方案5】:

        也许对你有帮助……

        -(void)methodFour
        {
            NSArray *arr1 = [[NSArray alloc]initWithObjects:@"a2223a",@"ab33b",@"a1acdf",@"ac23c45", nil];
            NSArray *arr11 =  [arr1 sortedArrayUsingSelector:@selector(localizedCompare:)];
            NSLog(@"%@",arr11);
        
            NSArray *arr2 = [[NSArray alloc]initWithObjects:@"ab33b",@"ac23c45",@"a1acdf",@"a2223a", nil];
            NSArray *arr22= [arr2 sortedArrayUsingSelector:@selector(localizedCompare:)];
            [self firstArray:arr11 secondArray:arr22];
           }
        -(void)firstArray:(NSArray *)array1 secondArray:(NSArray *)array2
        {
            if ([array1 isEqualToArray:array2])
            {
                NSLog(@"equal");
        
            }
            else
            {
                NSLog(@"Not equal");
        
            }
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-01-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多