我有這個問題,我找不到解決方案,希望你們中的一個可以幫助我解決這個問題。
所以我有2個物件,
物件 1:
[0: {Name: 'John', DOB: '01-01-1990',ID01: 'Yes',ID02: 'No',ID03: 'Maybe'}
1: {Name: 'Kelly', DOB: '01-01-1990',ID01: 'Yes',ID02: 'No',ID03: 'Maybe'}
2: {Name: 'Sam', DOB: '01-01-1990', ID01: 'Yes',ID02: 'No',ID03: 'Maybe'}
3: {Name: 'Jessie', DOB: '01-01-1990',ID01: 'Yes',ID02: 'No',ID03: 'Maybe'}]
物件 2:
[0: {QnID:'ID01', Question: 'Do you like Ice-cream'}
1: {QnID:'ID02', Question: 'Do you like Chocolate'}
2: {QnID:'ID03', Question: 'Do you like Cookie'}]
我想將這兩個物件合并在一起,系統將檢查第一個物件是否具有相同的 ID,并將 ID 替換為第二個表中的問題,所以我的最終結果將是這樣的:
[0: {Name: 'John', DOB: '01-01-1990',Do you like Ice-cream: 'Yes',Do you like Chocolate: 'No',Do you like Cookie: 'Maybe'}
1: {Name: 'Kelly', DOB: '01-01-1990',Do you like Ice-cream: 'Yes',Do you like Chocolate: 'No',Do you like Cookie: 'Maybe'}
2: {Name: 'Sam', DOB: '01-01-1990', Do you like Ice-cream: 'Yes',Do you like Chocolate: 'No',Do you like Cookie: 'Maybe'}
3: {Name: 'Jessie', DOB: '01-01-1990',Do you like Ice-cream: 'Yes',Do you like Chocolate: 'No',Do you like Cookie: 'Maybe'}]
實際的資料集要大得多。
uj5u.com熱心網友回復:
我會根據問題創建地圖,以便您快速訪問問題:
const qMap = {};
questions.forEach(q => {
qMap[q.QnID] = q.Question;
})
然后通過所有人。
persons.map(person => {
const newPerson = {};
const keys = Object.keys(person);
keys.forEach(key => {
if (qMap[key]) {
newPerson[qMap[key]] = person[key];
} else {
newPerson[key] = person[key];
}
})
return newPerson
})
uj5u.com熱心網友回復:
您可以使用、和方法的組合map(),如下所示:Object.entries()find()Object.fromEntries()
const arr1 = [
{ Name: 'John', DOB: '01-01-1990', ID01: 'Yes', ID02: 'No', ID03: 'Maybe' },
{ Name: 'Kelly', DOB: '01-01-1990', ID01: 'Yes', ID02: 'No', ID03: 'Maybe' },
{ Name: 'Sam', DOB: '01-01-1990', ID01: 'Yes', ID02: 'No', ID03: 'Maybe' },
{ Name: 'Jessie', DOB: '01-01-1990', ID01: 'Yes', ID02: 'No', ID03: 'Maybe' },
];
const arr2 = [
{ QnID: 'ID01', Question: 'Do you like Ice-cream' },
{ QnID: 'ID02', Question: 'Do you like Chocolate' },
{ QnID: 'ID03', Question: 'Do you like Cookie' },
];
const arr3 = arr1.map(({Name,DOB,...rest}) => ({
Name,
DOB,
...Object.fromEntries(
Object.entries(rest).map(
([prop,val]) => [arr2.find(obj => obj.QnID === prop)['Question'],val]
)
)
}));
console.log( arr3 );
uj5u.com熱心網友回復:
好的,首先你需要修復你的陣列結構。
const arr1 = [
{ Name: 'John', DOB: '01-01-1990', ID01: 'Yes', ID02: 'No', ID03: 'Maybe' },
{ Name: 'Kelly', DOB: '01-01-1990', ID01: 'Yes', ID02: 'No', ID03: 'Maybe' },
{ Name: 'Sam', DOB: '01-01-1990', ID01: 'Yes', ID02: 'No', ID03: 'Maybe' },
{ Name: 'Jessie', DOB: '01-01-1990', ID01: 'Yes', ID02: 'No', ID03: 'Maybe' },
];
const arr2 = [
{ QnID: 'ID01', Question: 'Do you like Ice-cream' },
{ QnID: 'ID02', Question: 'Do you like Chocolate' },
{ QnID: 'ID03', Question: 'Do you like Cookie' },
];
const result = arr1.map((obj) =>
Object.assign({ Name: obj.Name, DOB: obj.DOB }, ...arr2.map((obj2) => ({ [obj2.Question]: obj[obj2.QnID] })))
);
console.log(result);
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/431116.html
標籤:javascript 数组 反应 目的
