var contacts = [
{ account: "Acme", firstName: "John", lastName: "Snow" },
{ account: "Metal Industries", firstName: "Ted", lastName: "Smith" },
{ account: "Acme", firstName: "Sara", lastName: "Butler" },
{ account: "HiTech Corp", firstName: "Sam", lastName: "Johnson" },
{ account: "HiTech Corp", firstName: "Arnold", lastName: "Williams" },
{ account: "Metal Industries", firstName: "Jessica", lastName: "Westcoat" },
{ account: "Acme", firstName: "Kyle", lastName: "Johnson" },
{ account: "HiTech Corp", firstName: "Jason", lastName: "Fernandez" }
];
目標是獲得此輸出:
result = {
"Acme": ["John Snow", "Kyle Johnson", "Sara Butler"],
"HiTech Corp": ["Arnold Williams", "Jason Fernandez", "Sam Johnson"],
"Metal Industries": ["Jessica Westcoat", "Ted Smith"]
}
我下面的函式不回傳值陣列,只回傳最后一個值
const convertArrayToObject = (array, key) => {
const initialValue = {}
return array.reduce((obj, item) => {
return {...obj,[item[key]]: item,}
}, initialValue)
}
輸出
任何幫助表示贊賞
uj5u.com熱心網友回復:
你接近,只是缺少,當您設定產生的陣列中的物件,您需要將其設定為一個陣列-在這個腳本中,這將是[k]: [v]不[k]: v
var contacts = [
{ account: "Acme", firstName: "John", lastName: "Snow" },
{ account: "Metal Industries", firstName: "Ted", lastName: "Smith" },
{ account: "Acme", firstName: "Sara", lastName: "Butler" },
{ account: "HiTech Corp", firstName: "Sam", lastName: "Johnson" },
{ account: "HiTech Corp", firstName: "Arnold", lastName: "Williams" },
{ account: "Metal Industries", firstName: "Jessica", lastName: "Westcoat" },
{ account: "Acme", firstName: "Kyle", lastName: "Johnson" },
{ account: "HiTech Corp", firstName: "Jason", lastName: "Fernandez" }
];
const convertArrayToObject = (array, key) => {
const initialValue = {}
return array.reduce((obj, item) => {
let k = item[key], v=item.firstName ' ' item.lastName;
if (obj[k]) obj[k].push(v);
else obj = { ...obj, [k]: [v] }
return obj
}, initialValue)
}
console.log(convertArrayToObject(contacts, 'account'))
uj5u.com熱心網友回復:
const convertArrayToObject = (array, key) => {
const initialValue = {}
array.forEach((obj, item) => {
initialValue[obj.account] = initialValue[obj.account] || []
initialValue[obj.account].push(`${obj.firstName} ${obj.lastName}`)
})
return initialValue
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/371795.html
標籤:javascript 数组
