JavaScript中未知对象数组键名时,如何提取全部键值对?
问题原因
你之前直接对数组本身调用Object.keys(),数组的可枚举属性就是各元素的索引,所以只会返回['0','1','2'],拿不到内部嵌套对象的键值。
实现方案
下面提供3种常用的实现方式,按需选择即可:
方案1:提取所有键值对为二维数组
用flatMap+Object.entries直接拉平所有结果:let arr = [{'John': 0}, {'Doe': 50}, {'Marry': 100}] const allPairs = arr.flatMap(item => Object.entries(item)) // 输出结果:[['John', 0], ['Doe', 50], ['Marry', 100]]方案2:把所有键值对合并为单个对象
用展开运算符+Object.assign合并所有数组元素的属性:const mergedObj = Object.assign({}, ...arr) // 输出结果:{ John: 0, Doe: 50, Marry: 100 }方案3:遍历逐个处理每个键值对
适合需要对每个键值做单独逻辑处理的场景:arr.forEach(item => { for(const [key, value] of Object.entries(item)) { // 此处可自定义处理逻辑,示例为打印 console.log(`键名:${key},对应值:${value}`) } })
内容的提问来源于stack exchange,提问作者mrssolaris
相关产品推荐
相关产品推荐

