一个数组里面找到相同的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);