我有一个字典和一个数组,如下所示
字典:
{
"value": [
{
"ctgid": "1",
"catename": "tow"
},
{
"ctgid": "2",
"catename": "towrequest"
},
{
"ctgid": "3",
"catename": "electrical"
},
{
"ctgid": "5",
"catename": "plumber"
},
{
"ctgid": "6",
"catename": "maintenance"
},
{
"ctgid": "7",
"catename": "home"
},
{
"ctgid": "8",
"catename": "computer"
},
{
"ctgid": "9",
"catename": "1q2w"
}
]
}
类名数组:
(
tow,
towrequest,
plumber
)
Array 中有一个 catename 列表。根据上面的字典,我想在上面的数组中创建与 catename 相关的 ctgid 数组。
所以我的最终输出应该是:
catgid 数组:
(
1,
2,
5
)
注意:我可以用循环来做,但我不想使用任何循环。
最佳答案
//Json data
NSString *jsonString = @"{\"value\":[{\"ctgid\":\"1\",\"catename\":\"tow\"},{\"ctgid\":\"2\",\"catename\":\"towrequest\"},{\"ctgid\":\"3\",\"catename\":\"electrical\"},{\"ctgid\":\"5\",\"catename\":\"plumber\"},{\"ctgid\":\"6\",\"catename\":\"maintenance\"},{\"ctgid\":\"7\",\"catename\":\"home\"},{\"ctgid\":\"8\",\"catename\":\"computer\"},{\"ctgid\":\"9\",\"catename\":\"1q2w\"}]}";
NSData *data = [jsonString dataUsingEncoding:NSUTF8StringEncoding];
//Converting the data into NSDictionary
NSDictionary *json = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
//Get the array of objects
NSArray *array = [NSArray arrayWithArray:[json objectForKey:@"value" ]];
//Category filter names
NSArray *filteCatename = [NSArray arrayWithObjects:@"tow",@"towrequest",@"plumber",nil];
//NSPreicate to filter the array using "in" constrain
NSArray *filtered = [array filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"(catename in %@)", filteCatename]];
您可以使用 NSPredicate
直接过滤 NSArray
而无需循环。
关于ios - 创建从字典数组中过滤的数组,并将数组作为输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22368986/