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

如何提取数组中指定评分元素并重组为目标结构数组?

数组结构转换实现方案

可以通过定义字段映射+遍历收集的方式完成这个结构转换,具体步骤和代码如下:

1. 定义Rating字段与factor的映射关系

先把原数据中带Rating后缀的字段和目标结构里的factor名称一一对应,方便批量处理:

const ratingFactorMap = {
  carryRating: 'carry',
  distanceRating: 'distance',
  obHavoQuruqRating: 'obHavoQuruq',
  yetkazibBeruvchiningMoliyaviyAhvoliRating: 'yetkazibBeruvchiningMoliyaviyAhvoli',
  obHavoYogingarchilikQorVaHKRating: 'obHavoYogingarchilikQorVaHK'
};

2. 初始化结果数组

基于映射表创建每个factor对应的基础对象:

const newData = Object.entries(ratingFactorMap).map(([_, factor]) => ({
  factor
}));

3. 遍历原数组填充Rating值

遍历原数组的每个元素,根据索引生成对应的键名(如firstElementOfArray),再把每个Rating值填入对应结果对象:

const originalData = [/* 你的原数组数据 */];

originalData.forEach((item, index) => {
  // 根据索引匹配目标键名
  const elementKey = [
    'firstElementOfArray',
    'secondElementOfArray',
    'thirdElementOfArray',
    'fourthElementOfArray'
  ][index];
  
  // 遍历所有Rating字段,填充到对应factor对象中
  Object.entries(ratingFactorMap).forEach(([ratingKey, factor]) => {
    const targetObj = newData.find(obj => obj.factor === factor);
    targetObj[elementKey] = item[ratingKey];
  });
});

完整可运行代码

const originalData = [
  {"carryRating":21,"distanceRating":72,"obHavoYogingarchilikQorVaHKRating":74,"obHavoQuruqRating":40,"yetkazibBeruvchiningMoliyaviyAhvoliRating":32,"id":1,"direction":"A","distance":"90.55","carry":"365","obHavoQuruq":"50","yetkazibBeruvchiningMoliyaviyAhvoli":"56","obHavoYogingarchilikQorVaHK":"58"},
  {"carryRating":35,"distanceRating":74,"obHavoYogingarchilikQorVaHKRating":71,"obHavoQuruqRating":29,"yetkazibBeruvchiningMoliyaviyAhvoliRating":55,"id":2,"direction":"B","distance":"82.46","carry":"589","obHavoQuruq":"36","yetkazibBeruvchiningMoliyaviyAhvoli":"98","obHavoYogingarchilikQorVaHK":"65"},
  {"carryRating":19,"distanceRating":76,"obHavoYogingarchilikQorVaHKRating":90,"obHavoQuruqRating":17,"yetkazibBeruvchiningMoliyaviyAhvoliRating":11,"id":3,"direction":"C","distance":"76.16","carry":"326","obHavoQuruq":"21","yetkazibBeruvchiningMoliyaviyAhvoli":"20","obHavoYogingarchilikQorVaHK":"23"},
  {"carryRating":25,"distanceRating":78,"obHavoYogingarchilikQorVaHKRating":65,"obHavoQuruqRating":14,"yetkazibBeruvchiningMoliyaviyAhvoliRating":2,"id":4,"direction":"D","distance":"72.11","carry":"421","obHavoQuruq":"17","yetkazibBeruvchiningMoliyaviyAhvoli":"3","obHavoYogingarchilikQorVaHK":"78"}
];

const ratingFactorMap = {
  carryRating: 'carry',
  distanceRating: 'distance',
  obHavoQuruqRating: 'obHavoQuruq',
  yetkazibBeruvchiningMoliyaviyAhvoliRating: 'yetkazibBeruvchiningMoliyaviyAhvoli',
  obHavoYogingarchilikQorVaHKRating: 'obHavoYogingarchilikQorVaHK'
};

// 初始化结果数组
const newData = Object.entries(ratingFactorMap).map(([_, factor]) => ({
  factor
}));

// 填充每个元素的Rating值
originalData.forEach((item, index) => {
  const elementKeys = [
    'firstElementOfArray',
    'secondElementOfArray',
    'thirdElementOfArray',
    'fourthElementOfArray'
  ];
  const currentKey = elementKeys[index];
  
  Object.entries(ratingFactorMap).forEach(([ratingKey, factor]) => {
    const target = newData.find(obj => obj.factor === factor);
    target[currentKey] = item[ratingKey];
  });
});

console.log(newData);

补充说明

  • 这种方式无需使用filter,通过映射表直接关联字段关系,逻辑更贴合需求
  • 如果原数组长度变化,可动态生成键名(比如用${index + 1}thElementOfArray格式),扩展性更强

内容的提问来源于stack exchange,提问作者83hru2

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 17:56:05