JavaScript 如何检测对象属性为可迭代数组并对其执行遍历
实现方法
方案1:仅检测数组类型(适配你当前的场景)
如果你只需要对数组类型的属性做二次遍历,使用Array.isArray()判断是最准确的,不会把字符串、Set等其他可迭代类型误判进来。
完整可运行代码如下:
// 补全你漏写的对象定义 const jonas = { firstName: 'Jonas', lastName: 'Schmedtmann', age: 2037 - 1991, job: 'teacher', friends: ['Michael', 'Peter', 'Steven'], }; const myObj = Object.entries(jonas); for (const [key, val] of myObj) { // 检测是否为数组 if (Array.isArray(val)) { console.log(`数组属性${key}的元素如下:`); // 遍历数组输出每个元素 for (const item of val) { console.log(`- ${item}`); } } else { // 非数组属性正常输出 console.log(key, val); } }
方案2:检测所有可迭代类型(适配更通用的场景)
如果你需要识别所有符合JS迭代协议的类型(包括数组、Set、Map、字符串等),可以通过判断目标值是否存在Symbol.iterator方法实现:
核心判断逻辑代码如下:
for (const [key, val] of myObj) { // 检测是否为可迭代类型,先做非空判断避免报错 if (val != null && typeof val[Symbol.iterator] === 'function') { console.log(`可迭代属性${key}的元素如下:`); for (const item of val) { console.log(`- ${item}`); } } else { console.log(key, val); } }
内容的提问来源于stack exchange,提问作者Musicman
相关产品推荐
相关产品推荐

