合并两个数组,而preserving原数组顺序 [英] Merge two arrays while preserving the original array order

查看:145
本文介绍了合并两个数组,而preserving原数组顺序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我写从外部源(微),其返回在时间顺序有序阵列请求数据的应用程序

外部阵列


  1. 项目A(最新)

  2. B项

  3. C项

  4. 项目D(老)

我添加这些项目到另一个阵列preserving相同的顺序:

我的阵列


  1. 项目A(最新)

  2. B项

  3. C项

  4. 项目D(老)

然后我再次查询外部源和接收新项目的另一个数组,它看起来像这样:

新的外部阵列


  1. E项(最新)

  2. 项目F.

  3. 商品G

  4. 项目^ h

我将它们添加到我的阵列,并得到这样的:

我的阵列


  1. 项目A

  2. B项

  3. C项

  4. 项目D(老)

  5. E项(最新)

  6. 项目F.

  7. 商品G

  8. 项目^ h

问题是,外部阵列数据与最新的项目按时间分类第一原来这是A,因为做一个更新,现在是E.所以,你可以看到排列的顺序是错的,现在,我需要的是

我的阵列


  1. E项(最新)

  2. 项目F.

  3. 商品G

  4. 项目^ h

  5. 项目A

  6. B项

  7. C项

  8. 项目D(老)

我的code目前看起来是这样的:

 的NSMutableArray * myArray的= [[NSMutableArray里的alloc]初始化];
...
- (无效)getDataFromExternalSource:(NSArray的*)externalArray
{
对于(*的NSDictionary在externalArray项){    //需要循环,所以我可以与每个项目的对象在这里做一些额外的东西(在这个例子中不显示。)
    [myArray的ADDOBJECT:项目];
}
}


解决方案

 的NSArray * newArray = [externalArray arrayByAddingObjectsFromArray:myArray的]。
[myArray的释放];
myArray的= [newArray mutableCopy]

任何理由不这样做呢?

I've writing an application that requests data from an external source (Twitter), which is returned as an ordered array in chronological order:

External array

  1. Item A (Latest)
  2. Item B
  3. Item C
  4. Item D (Oldest)

I add these items to another array preserving the same order:

My array

  1. Item A (Latest)
  2. Item B
  3. Item C
  4. Item D (Oldest)

I then query the external source again and receive another array of new items, it looks like this:

New External array

  1. Item E (Latest)
  2. Item F
  3. Item G
  4. Item H

I add them to my array and get this:

My array

  1. Item A
  2. Item B
  3. Item C
  4. Item D (Oldest)
  5. Item E (Latest)
  6. Item F
  7. Item G
  8. Item H

The problem is that the external array data is sorted chronologically with the newest item first originally that was A, since doing an update that is now E. So you can see the ordering of the array is now wrong, what I need is:

My array

  1. Item E (Latest)
  2. Item F
  3. Item G
  4. Item H
  5. Item A
  6. Item B
  7. Item C
  8. Item D (Oldest)

My code currently looks something like this:

NSMutableArray *myArray = [[NSMutableArray alloc] init]; 
...
- (void)getDataFromExternalSource:(NSArray *)externalArray
{
for(NSDictionary *item in externalArray) {

    // Need loop so I can do some extra stuff here with each item object (not shown in this example.)
    [myArray addObject: item];
}   
}

解决方案

NSArray *newArray = [externalArray arrayByAddingObjectsFromArray:myArray];
[myArray release];
myArray = [newArray mutableCopy];

Any reason not to do this?

这篇关于合并两个数组,而preserving原数组顺序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆