You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从API输出的对象数组中提取指定维度与指标值组成数组

提取指定维度对应的指标值解决方案

需要从给定的API输出中提取维度值Unassigned及其对应的指标值64314,组成['Unassigned',64314]格式的数组。目前使用for-in循环遍历obj.rows时,只能输出dimensionValues和metricValues,无法完成对应值的映射,以下是几种可行的解决方案:


方法1:使用Array.find()快速定位目标行

find()方法可直接筛选出维度值为Unassigned的行,再提取对应值组成目标数组,代码简洁高效:

const targetRow = obj.rows.find(row => row.dimensionValues[0].value === 'Unassigned');
const result = [targetRow.dimensionValues[0].value, parseInt(targetRow.metricValues[0].value)];
console.log(result); // 输出: ['Unassigned', 64314]

方法2:使用forEach遍历所有行(替代for-in)

forEach更适配数组遍历,避免for-in可能带来的原型链遍历问题,同时在遍历中判断并提取目标值:

let result = [];
obj.rows.forEach(row => {
  const dimValue = row.dimensionValues[0].value;
  const metricValue = parseInt(row.metricValues[0].value);
  if (dimValue === 'Unassigned') {
    result = [dimValue, metricValue];
  }
});
console.log(result); // 输出: ['Unassigned', 64314]

方法3:改进原有的for-in循环

如果坚持使用for-in,需确保遍历数组索引,同时正确取出嵌套的value值:

let result = [];
for (const index in obj.rows) {
  const row = obj.rows[index];
  const dimValue = row.dimensionValues[0].value;
  if (dimValue === 'Unassigned') {
    const metricValue = parseInt(row.metricValues[0].value);
    result = [dimValue, metricValue];
    break; // 找到目标后停止遍历,提升效率
  }
}
console.log(result); // 输出: ['Unassigned', 64314]

关键说明

  • metricValues中的value为字符串类型,需用parseInt()转换为数字,匹配目标数组格式要求
  • dimensionValues和metricValues均为数组,因本次数据仅含一个维度和指标,直接取索引0对应的value即可

内容的提问来源于stack exchange,提问作者Arif Ahmed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 00:40:06