如何在Javascript中将指定JSON对象动态转换为数值数组?
解决方案
方法1:用Object.values() + Array.flat()实现(最简洁)
先提取对象所有属性的数组值,再把嵌套数组扁平化,一步到位:
let data = { "OP_LC_check": [0], "OP_LG_check": [0], "LY_LC_check": [5374], "LY_GC_check": [6086], "ACT_LC_check": [5299], "ACT_GC_check": [3241], "ACT_GC_AT_OP_check": [2980], "ACT_GC_AT_LY_check": [3093] }; const result = Object.values(data).flat(); console.log(result); // 输出: [0, 0, 5374, 6086, 5299, 3241, 2980, 3093]
Object.values(data)会返回所有属性值组成的嵌套数组:[[0], [0], [5374], ...],flat()方法直接把它展开成一维数组。
方法2:手动遍历兼容旧环境
如果需要兼容不支持flat()的老版本浏览器,可以手动循环提取:
let data = { /* 你的数据 */ }; const result = []; for (const key in data) { // 过滤掉原型链上的属性,只处理对象自身属性 if (data.hasOwnProperty(key)) { // 每个属性值都是单元素数组,直接取第一个元素加入结果 result.push(data[key][0]); } } console.log(result); // 得到目标数组
方法3:用Array.reduce()收集元素
通过reduce遍历属性值数组,逐个把元素加入结果:
let data = { /* 你的数据 */ }; const result = Object.values(data).reduce((acc, curr) => { acc.push(curr[0]); return acc; }, []); console.log(result);
这几种方法都能动态处理对象的所有属性,不管后续新增多少属性,都能自动提取对应数值。
内容的提问来源于stack exchange,提问作者Carlos Chinchilla Fiter
相关产品推荐
相关产品推荐

