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

如何根据嵌套对象属性调整由嵌套对象构成的数组结构

实现代码

你可以先把所有语言对应的书籍映射聚合到一个临时对象,再转成目标数组结构即可,完整可运行代码如下:

const data = [
  {
    name: 'Book_1',
    value: {
      eng: 'english_book_1',
      sp: 'spanish_book_1'
    }
  },
  {
    name: 'Book_2',
    value: {
      eng: 'english_book_2',
      sp: 'spanish_book_2'
    }
  }
];

// 临时聚合对象,存储每个语言对应的所有书籍键值对
const langAggregate = {};

data.forEach(bookItem => {
  // 遍历单本书的所有语言版本
  Object.entries(bookItem.value).forEach(([langKey, langValue]) => {
    // 首次遇到该语言时初始化空对象
    if (!langAggregate[langKey]) {
      langAggregate[langKey] = {};
    }
    // 写入当前书籍的对应语言值
    langAggregate[langKey][bookItem.name] = langValue;
  })
})

// 把聚合对象转成你需要的数组结构
const modified = Object.entries(langAggregate).map(([lang, bookMap]) => {
  return { [lang]: bookMap };
})

console.log(modified);

原有代码问题说明

  • 只在循环外声明了一个object对象,所有操作都在修改同一个对象的引用,最终数组里所有元素都会指向同一个对象
  • 没有实际给object写入你需要的语言、书籍键值对,核心逻辑是空的
  • 每次内层循环都直接往数组push对象,会出现大量重复无效元素

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 13:39:03