多種方法對iOS陣列中的元素去重複

2021-07-23 14:52:54 字數 2065 閱讀 4253

例如:

1

2

3

nsarray*array=@[@"12-11",@"12-11",@"12-11",@"12-12",@"12-13",@"12-14"];

參***: 1

2

3

4

5

6

7

8

9

10

11

12

nsmutablearray*resultarray=[[nsmutablearrayalloc]initwithcapacity:array.count];

// 外層乙個迴圈

for(nsstring*iteminarray)

} nslog(@"resultarray: %@",resultarray);

補充:原來集合操作可以通過valueforkeypath來實現的,去重可以一行**實現:

1

2

3

4

array=[arrayvalueforkeypath:@"@distinctunionofobjects.self"];

nslog(@"%@",array);

1

2

3

4

5

6

7

8

nsmutabledictionary*resultdict=[[nsmutabledictionaryalloc]initwithcapacity:array.count];

for(nsstring*iteminarray)

nsarray*resultarray=resultdict.allvalues;

nslog(@"%@",resultarray);

如果需要按照原來的公升序排序,可以這樣:

1

2

3

4

5

6

7

8

resultarray=[resultarraysortedarrayusingcomparator:^nscomparisonresult(id_nonnull obj1,id_nonnull obj2)];

nslog(@"%@",resultarray);

12

3

4

5

nsset*set=[nssetsetwitharray:array];

nsarray*resultarray=[set allobjects];

nslog(@"%@",resultarray);

如果要求有序,那就得排序,比如這裡要公升序排序:

1

2

3

4

5

6

7

8

resultarray=[resultarraysortedarrayusingcomparator:^nscomparisonresult(id_nonnull obj1,id_nonnull obj2)];

nslog(@"%@",resultarray);

補充:一直沒有使用過有序集合,網友們反饋到可以直接使用有序集合,感謝大家:

1

2

3

4

nsorderedset*set=[nsorderedsetorderedsetwitharray:array];

nslog(@"%@",set.array);

陣列去重的多種方法

陣列去重的方法有很多,廢話不多說下面只寫3種,分別是從複雜到簡單 1.利用foreach進行輪詢需要去重的陣列,然後通過判斷新陣列 這個新陣列需要在輪詢之前建立乙個空陣列 中是否包含進行新增不重複的每一項得到新陣列 此方法的缺點 function removedup arry return noma...

陣列去重的多種方法

1.將陣列的每乙個元素依次與其他元素做比較,發現重複元素,利用陣列方法splice 刪除重複元素 var arr 1 23,1 1,1 3,23 5,6 7,9 9,8 5,5 5,5 function norepeat arr return arr var arr2 norepeat arr co...

js 陣列去重多種方法

var arr 1,2,3,2,1,2,1,34,44 方法一 利用jquery unique var newarr unique arr 方法二 利用indexof去重 var newarr for var i 0 i if newarr.indexof arr i 1 return newarr...