如何从一个数组中获取具有其他相同属性的对象?

     2023-03-11     142

关键词:

【中文标题】如何从一个数组中获取具有其他相同属性的对象?【英文标题】:How get objects from one array with same properties of other? 【发布时间】:2016-11-25 10:18:55 【问题描述】:

例如: 我有两个NSMutableArray。一个@[1,2,3,4,5,6,7]。其他有像

这样的对象
@[
   @@idObjectToSearch":1, @"name":@"aaaaa", @"surname": @"bbbbb", @@idObjectToSearch":2, @"name":@"aaaaa", @"surname": @"ccccc",
    ...
   @@idObjectToSearch":100, @"name":@"aaaaa", @"surname": @"cccdcd"
];

那么我怎样才能更有效地从第二个数组中提取所需的对象呢?

【问题讨论】:

这两个数组之间的联系是什么,基于您要从第二个数组中提取对象的内容? @Rajat 我需要“idObjectToSearch”的所有对象 除非您想将第二个数组中的对象加载到由idObjectToSearch 值键入的字典中(这就是我会做的),否则您使用的任何技术都将是数组的线性搜索 【参考方案1】:

您需要在第二个数组中使用NSPredicate

NSPredicate *predicate = [NSPredicate predicateWithFormat:@"idObjectToSearch IN %@", firstArray];
//In above predicate instead of passing `1` you need to pass object from first array that you want.

NSArray *filterArray = [secondArray filteredArrayUsingPredicate:predicate];

//Now access Array objects
if (filterArray.count > 0) 
     NSLog(@"%@",filterArray);

【讨论】:

它只返回一个对象,但我需要全部 7 个,如示例所示。所以我可以用 OR 形成一个长谓词,但我认为这不是我的情况的好方法。 @Viktorianec 那么你需要使用IN 检查编辑后的答案【参考方案2】:

你可以这样做

NSMutableArray * arrSorted = [NSMutableArray new];
for(int i=0;i<arr.count;i++) 
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"idObjectToSearch == %@", firstArray[i]];
    NSUInteger index = [secondArray indexOfObjectPassingTest:^(id obj, NSUInteger idx, BOOL *stop) 
        return [predicate evaluateWithObject:obj];
    ];
    if (index != NSNotFound) 
        [arrSorted addObject:[arrM objectAtIndex:index]];
    

arrSorted 将包含您的排序数据

【讨论】:

从数组中删除重复的对象

...,例如:我们想要从数组中删除这些重复的对象,我们该如何解决?为了理解原因,让我们先来看看如何从平面项数组(如字符串)中删除重复项。假设我们有一个字符串数组,如下所示:如果我们想从这个数组中删除任何重复... 查看详情

如何将具有相同属性的对象合并到一个数组中?

】如何将具有相同属性的对象合并到一个数组中?【英文标题】:HowtomergeobjectswiththesamepropertiesintoanArray?【发布时间】:2018-04-0819:55:14【问题描述】:我想将两个具有相同属性的对象合并到一个数组中。以此为例:object1="id":1,"nam... 查看详情

从具有相同属性的数组中查找和删除对象

...间】:2021-07-1720:04:45【问题描述】:我有两个对象数组,一个有大约。1800项,第二项约。600项。每个数组中的数据示例:letexampleArray=[ID:X2346,NAME:"someName",ID:X8847,NAME:"someName2",.. 查看详情

如何从具有属性“名称”字符串数组(名称对应于每个对象)的对象数组中获取? [关闭]

】如何从具有属性“名称”字符串数组(名称对应于每个对象)的对象数组中获取?[关闭]【英文标题】:Howtogetfromarrayofobjectswithproperty"name"arrayofstrings(withnamescorrespondingtoeachobject)?[closed]【发布时间】:2012-07-0303:18:28【问... 查看详情

在对象数组中对具有相同对象属性的 javascript 对象属性值求和

...narrayofobjects【发布时间】:2013-10-1412:35:51【问题描述】:如何获取一个javascript对象数组,例如:myobjArr=[key:MonSep23201300:00:00GMT-0400,val:42, 查看详情

如何使用 NSPredicate 从数组内的字典数组中搜索项目?

】如何使用NSPredicate从数组内的字典数组中搜索项目?【英文标题】:HowtouseNSPredicateforsearchinganitemfromanarrayofdictionariesinsideanarray?【发布时间】:2017-07-3114:30:22【问题描述】:我有一个对象列表。每个对象都有许多属性,包括称为... 查看详情

如何从一行列表中的所有对象中获取相同的属性

】如何从一行列表中的所有对象中获取相同的属性【英文标题】:Howtogetthesameattributefromallobjectsinalistinoneline【发布时间】:2020-07-0605:29:37【问题描述】:我有一个相同类的对象列表。此类包含我要使用的属性。我想在一行中列出... 查看详情

我可以有两个具有相同属性名称的对象吗? [复制]

...016-04-0421:24:42【问题描述】:每当我尝试更改数组y中的第一个对象时,我数组中的所有其他对象y属性也会更改,有没有办法防止这种情况发生,或者有办法将多个对象添加到共享相同的数组中特性?我一直在尝试解决这个问题... 查看详情

对象数组的对象。获取具有相同属性的所有值的长度

...eproperty【发布时间】:2019-06-0515:59:08【问题描述】:我有一个看起来像这样的对象:varobj="array1":["label":"something1","ref":"option2a","label":"something2","r 查看详情

如何从具有嵌套对象数组的对象数组中获取所有特定值?

】如何从具有嵌套对象数组的对象数组中获取所有特定值?【英文标题】:Howtogetallspecificvaluesfromanarrayofobjectswithnestedarraysofobjects?【发布时间】:2020-07-2023:08:00【问题描述】:我有一个数组:constarr=[name:"name1",dontShow:true,children:[na... 查看详情

从具有相同实现的数组列表中创建对象

...mentation【发布时间】:2017-12-3012:36:30【问题描述】:我有一个不同类的HashMap,它们具有与每个键关联的不同属性。我正在使用Java8的stream()API来合并基于属性的列表。我的目标是迭代合并列表,根据类创建一个对象,并使用接口... 查看详情

从CoreData获取给定属性具有相同值的对象?

】从CoreData获取给定属性具有相同值的对象?【英文标题】:FetchobjectshavingthesamevalueforagivenpropertyfromCoreData?【发布时间】:2015-07-0208:54:00【问题描述】:我想从CoreData获取生日相同的人?或者一般来说,如果我有一组人[Person]其中... 查看详情

从具有对象属性之一的对象列表中获取索引

...ttributes【发布时间】:2018-04-1321:59:25【问题描述】:我有一个对象列表,我试图从我拥有的对象的属性(例如名称)中获取该列表中一个对象的索引。类似于下面的例子:classEmployee:def__init__(self,name):self.name=named 查看详情

如何从包含对象的数组中获取第一个元素

】如何从包含对象的数组中获取第一个元素【英文标题】:Howtogetthefirstelementfromanarraywithobjects【发布时间】:2021-08-1419:46:39【问题描述】:我正在尝试使用&lt;li&gt;i[0].name&lt;/li&gt;从数组中获取第一个元素,但我收到... 查看详情

如何检查包含另一个对象数组的对象数组是不是具有属性

】如何检查包含另一个对象数组的对象数组是不是具有属性【英文标题】:Howtocheckifarrayofobjectsthatcontainsanotherarrayofobjecthasproperty如何检查包含另一个对象数组的对象数组是否具有属性【发布时间】:2021-12-2617:25:19【问题描述】:... 查看详情

Vue 2 - 如何从对象内部的数组中获取属性

】Vue2-如何从对象内部的数组中获取属性【英文标题】:Vue2-Howtov-forapropertyfromanarraythatisinsideanobject【发布时间】:2021-07-1315:03:34【问题描述】:我试图从名为girlsList的主数组中的TimeMode数组推断time属性,但我没有显示任何内容,... 查看详情

从对象数组中,将属性的值提取为数组

...jArray=[foo:1,bar:2,foo:3,bar:4,foo:5,bar:6];我想从每个对象中提取一个字段,并获取一个包含值的数组,例如字段foo将给出数组[1 查看详情

NodeJS / Javascript在不同数组中查找具有相同属性的对象

】NodeJS/Javascript在不同数组中查找具有相同属性的对象【英文标题】:NodeJS/JavascriptFindingObjectswithsamePropertyindifferentArray【发布时间】:2018-11-0315:41:21【问题描述】:我在NodeJS中做一些事情,需要比较不同数组中的对象的重复属性... 查看详情