excel导出--数组数据处理

lxf2023-05-05 21:29:01

一个数组里面找到相同的name,并将其langId对应的code作为key,content作为value,返回新的数组

//原数组
const data = [
  {
    langId: 3,
    keyword: 'deviceFunc_camera_came',
    content: 'You can take a photo by shaking your arm.'
  },
  {
    langId: 4,
    keyword: 'deviceFunc_camera_came',
    content: '時計を装着し、腕を振って撮影操作をしてください。'
  },
  {
    langId: 3,
    keyword: 'deviceFunc',
    content:
      'Veuillez porter la montre et commander la prise de photographie en secouant votre bras.'
  },
  {
    langId: 4,
    keyword: 'deviceFunc',
    content:
      'Tragen Sie die Uhr und steuern Sie die Aufnahme durch Schütteln des Arms.'
  }
];
//返回的数组
[
  {
    keyword: 'deviceFunc_camera_came',
    en: 'You can take a photo by shaking your arm.',
    ja: '時計を装着し、腕を振って撮影操作をしてください。'
  },
  {
    keyword: 'deviceFunc',
    fr: 'Veuillez porter la montre et commander la prise de photographie en secouant votre bras.',
    de: 'Tragen Sie die Uhr und steuern Sie die Aufnahme durch Schütteln des Arms.'
  }
]

完整的demo代码

const langList = [
  {
    id: 3,
    cn: '英语',
    en: 'English',
    code: 'en'
  },
  {
    id: 4,
    cn: '日语',
    en: 'Japanese',
    code: 'ja'
  },
];
const data = [
  {
    langId: 3,
    keyword: 'deviceFunc_camera_came',
    content: 'You can take a photo by shaking your arm.'
  },
  {
    langId: 4,
    keyword: 'deviceFunc_camera_came',
    content: '時計を装着し、腕を振って撮影操作をしてください。'
  },
  {
    langId: 3,
    keyword: 'deviceFunc',
    content:
      'Veuillez porter la montre et commander la prise de photographie en secouant votre bras.'
  },
  {
    langId: 4,
    keyword: 'deviceFunc',
    content:
      'Tragen Sie die Uhr und steuern Sie die Aufnahme durch Schütteln des Arms.'
  }
];
const nameArr = []; //存放keyword,用来查找是否有相同keyword的情况
const resultData = []; //合并结果数组
for (let i = 0; i < data.length; i++) {
  if (nameArr.indexOf(data[i].keyword) === -1) {
    // 如果没有该keyword就创建
    langList.forEach(item => {
      if (data[i].langId === item.id) {
        let obj = {};
        obj.keyword = data[i].keyword;
        obj[item.code] = data[i].content;
        resultData.push(obj);
      }
    });
    nameArr.push(data[i].keyword);
  } else {
    // 有相同keyword合并对象
    for (let j = 0; j < resultData.length; j++) {
      if (resultData[j].keyword === data[i].keyword) {
        langList.forEach(item => {
          if (data[i].langId === item.id) {
            resultData[j][item.code] = data[i].content;
          }
        });
      }
    }
  }
}
console.log('data', resultData);