如何在Swift字典数组中查找指定值是否存在?
查找数组中是否存在指定键的几种方法
嘿,这个需求很常见,我来给你分享几个实用的实现方式~先看你的数据结构:数组里的每个元素都是只含单个键值对的对象,我们要做的就是检查这些对象的键中是否包含search变量的值。
方法1:使用Array.some()(推荐)
some()是最适合这个场景的方法——它会遍历数组,只要找到一个符合条件的元素就立刻返回true,并且停止后续遍历,性能很高效。代码示例:
let someArray = [{"Andrew":"qwerty"},{"Paul":"123456"},{"Sarah":"123123"}]; let search = "Sarah"; const exists = someArray.some(obj => Object.keys(obj).includes(search)); console.log(exists); // 输出 true
简单解释下:
Object.keys(obj)获取当前对象的所有键(这里每个对象只有一个键)includes(search)检查键集合里是否包含我们要找的目标值some()只要匹配到一个符合条件的对象,就会终止遍历并返回true
方法2:使用Array.find()(兼顾查找与取值)
如果你之后还需要获取对应键的取值,可以用find()——它会返回第一个匹配条件的对象,我们再通过判断对象是否存在得到布尔结果:
const foundObj = someArray.find(obj => Object.keys(obj).includes(search)); const exists = !!foundObj; // 将对象转换成布尔值(存在则为true) console.log(exists); // 输出 true // 要是需要获取对应的密码,还能这样做: if (exists) { console.log(foundObj[search]); // 输出 "123123" }
方法3:手动遍历数组(基础写法)
如果你想更直观地控制遍历过程,也可以用for...of循环手动检查:
let exists = false; for (const obj of someArray) { if (Object.keys(obj).includes(search)) { exists = true; break; // 找到目标后立刻跳出循环,避免多余遍历 } } console.log(exists); // 输出 true
额外补充:就算你的数组对象里有多个键,这些方法也完全适用,因为Object.keys(obj)会获取对象的所有键再做匹配检查。
内容的提问来源于stack exchange,提问作者Roman Malasnyak
相关产品推荐
相关产品推荐

