我來自 PHP,無法在 JS 中執行簡單的關聯陣列任務,可以在 PHP 中完成。也許我正在使用不適合這種語言的方法。
所以,我有一個物件,我必須重建它以滿足進一步的需求。資訊正在添加到 while 回圈中。
可以說我有以下幾點:
陣列[0] = { 公司:'kfc',職位:'雞',姓名:'Andrejs',年齡:'20 天'}
陣列[1] = { 公司:'kfc',職位:'雞',姓名:'亞歷克斯',年齡:'15 天'}
陣列[2] = { 公司:'麥當勞',職位:'雞',姓名:'莉娜',年齡:'23 天'}
我希望獲得以下資訊:
{
{kfc:
{chicken:
{name: "Alex", Age: "15 days"},
{name: "Andrejs", Age: "20 days"}
}
},
{mcdonalds:
{ chicken:
{name: "Lena", age: 23 days}
}
}
}
我試過了:
- 創建一個物件:
food = {}; - 創建這樣的物件(在while回圈中):
food = {array[i].company : {array[i].position : {name: array[i].name, age: array[i].age}}}
這不起作用,因為它高估了前一輪寫入的資料。3. 創建變數 m 以給出唯一鍵:
food[m] = {array[i].company : {array[i].position : {name: array[i].name, age: array[i].age}}}
m ;
這不起作用,因為我在物件中有 3 個單獨的字串。4. 在 = 符號前使用一個鍵:
food[array[i].company][array[i].position] = {name: array[i].name, age: array[i].age}
這會產生錯誤,因為在第一輪中不存在此類密鑰。
我檢查了一些物件教程,但沒有找到解決方案。非常感謝那些指出在 JS 中創建關聯物件的正確方法的人。
uj5u.com熱心網友回復:
您可以使用Array.reduce()獲得所需的輸出,對company和 進行分組position。
對于每個專案,我們檢查該鍵是否有任何現有條目,如果沒有,我們創建它們。
每個position屬性將包含該位置的所有條目的陣列。
let arr = [
{ company: 'kfc', position: 'chicken', name: 'Andrejs', age: '20 days' },
{ company: 'kfc', position: 'chicken', name: 'Alex', age: '15 days' },
{ company: 'mcdonalds', position: 'chicken', name: 'Lena', age: '23 days' }
];
const output = arr.reduce((acc, { company, position, age, name }) => {
// If no existing items are here, create an empty object for this company.
acc[company] = acc[company] || { };
// If no existing items are here, create an empty array for this position.
acc[company][position] = acc[company][position] || [];
// Add the entry for the relevant position
acc[company][position].push({ age, name})
return acc;
}, {})
console.log(output)
.as-console-wrapper { max-height: 100% !important; top: 0; }
uj5u.com熱心網友回復:
這是一個groupEmployees將員工陣列組織成分層物件的函式:
TS 游樂場鏈接
function groupEmployees (employees) {
const group = {};
for (const { age, company, name, position } of employees) {
((group[company] ??= {})[position] ??= []).push({ age, name });
}
return group;
}
const employees = [
{ company: 'kfc', position: 'chicken', name: 'Andrejs', age: '20 days' },
{ company: 'kfc', position: 'chicken', name: 'Alex', age: '15 days' },
{ company: 'mcdonalds', position: 'chicken', name: 'Lena', age: '23 days' },
];
console.log(groupEmployees(employees));
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/364774.html
標籤:javascript 数组 列表 目的
上一篇:從變數中獲取物件的值
