第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

如何在Javascript中使用其對(duì)象鍵對(duì)數(shù)組進(jìn)行分組

如何在Javascript中使用其對(duì)象鍵對(duì)數(shù)組進(jìn)行分組

繁星coding 2022-10-21 14:58:25
我有一個(gè)包含員工詳細(xì)信息和工資信息的數(shù)組。我想將員工工資詳細(xì)信息與員工 ID 分組。這是輸入數(shù)組:let employeeDetails = [{  "employeeDetail": {    "empID": "XXYYZZ11",    "firstname": "abc",    "joinedAt": "13/04/2014",    "address": "VVGGHHNN"  },  "employeeSalaryDetails": [{    "month": "Jan",    "salaryAmount": "35000",    "Bank": "XXXXX",    "PfAccnum": "XXAAQQWWWWQ"  }]}, {  "employeeDetails": [{    "empID": "XXYYZZ11",    "firstname": "abc",    "joinedAt": "13/04/2014",    "address": "VVGGHHNN"  }],  "employeeSalaryDetails": [{    "month": "Feb",    "salaryAmount": "35000",    "Bank": "XXXXX",    "PfAccnum": "XXAAQQWWWWQ"  }]}]這是我想要實(shí)現(xiàn)的輸出:let employeeDetails = [{  "employeeDetails": [{    "empID": "XXYYZZ11",    "firstname": "abc",    "joinedAt": "13/04/2014",    "address": "VVGGHHNN"  }],  "employeeSalaryDetails": [{    "month": "Jan",    "salaryAmount": "35000",    "Bank": "XXXXX",    "PfAccnum": "XXAAQQWWWWQ"  }, {    "month": "Feb",    "salaryAmount": "35000",    "Bank": "XXXXX",    "PfAccnum": "XXAAQQWWWWQ"  }]}]這是我嘗試過的,但沒有得到我想要的結(jié)果。function employeeGroup(empArray, key) {  return empArray.reduce((obj, item) => {    (obj[item[key]] = obj[item[key]] || []).push(item)    return obj  }, {})}employeeGroup(employeeDetails, "empId")我是 Javascript 新手。誰可以幫我這個(gè)事 ?
查看完整描述

4 回答

?
慕田峪9158850

TA貢獻(xiàn)1794條經(jīng)驗(yàn) 獲得超7個(gè)贊

使用解構(gòu)將第一個(gè)數(shù)組元素提取為 item,并使用 employeeSalaryDetails 屬性。

帶有 empID 的對(duì)象包含在數(shù)組中。您沒有推送 meployeeSalaryDetails 對(duì)象。此外,您的 empId 應(yīng)該是 empID。


function employeeGroup(empArray, key) {

  return Object.values(empArray.reduce(

  (obj,{employeeDetails: [item], employeeSalaryDetails}) => {

      (obj[item[key]] = obj[item[key]] ||

       { employeeDetails: item, employeeSalaryDetails:[] })

           .employeeSalaryDetails.push(...employeeSalaryDetails)

      return obj

  }, {}))

}

console.log(

  employeeGroup(employeeDetails, "empID")

)

<script>

  let employeeDetails = [{

    "employeeDetails": [{

      "empID": "XXYYZZ11",

      "firstname": "abc",

      "joinedAt": "13/04/2014",

      "address": "VVGGHHNN"

    }],

    "employeeSalaryDetails": [{

      "month": "Jan",

      "salaryAmount": "35000",

      "Bank": "XXXXX",

      "PfAccnum": "XXAAQQWWWWQ"

    }]

  }, {

    "employeeDetails": [{

      "empID": "XXYYZZ11",

      "firstname": "abc",

      "joinedAt": "13/04/2014",

      "address": "VVGGHHNN"

    }],

    "employeeSalaryDetails": [{

      "month": "Feb",

      "salaryAmount": "35000",

      "Bank": "XXXXX",

      "PfAccnum": "XXAAQQWWWWQ"

    }]

  }]

</script>


查看完整回答
反對(duì) 回復(fù) 2022-10-21
?
POPMUISE

TA貢獻(xiàn)1765條經(jīng)驗(yàn) 獲得超5個(gè)贊

您可以使用reduce和 過濾掉您可以使用 和 的重復(fù)員工filter記錄some。這是一個(gè)工作示例。


var employeeDetails = [{ "employeeDetails": [ { "empID":"XXYYZZ11", "firstname": "abc", "joinedAt": "13/04/2014", "address": "VVGGHHNN" } ], "employeeSalaryDetails": [ { "month": "Jan", "salaryAmount": "35000", "Bank": "XXXXX", "PfAccnum": "XXAAQQWWWWQ" } ]}, { "employeeDetails": [ { "empID": "XXYYZZ11", "firstname": "abc", "joinedAt": "13/04/2014", "address": "VVGGHHNN" } ], "employeeSalaryDetails": [ { "month": "Feb", "salaryAmount": "35000", "Bank": "XXXXX", "PfAccnum": "XXAAQQWWWWQ" } ] }];


var result = [employeeDetails.reduce((acc, {employeeDetails, employeeSalaryDetails})=>{

    acc['employeeDetails'] = acc['employeeDetails'] || [];

    employeeDetails = employeeDetails.filter(k=>!acc['employeeDetails'].some(l=>l.empID==k.empID));

    acc['employeeDetails'] = [...acc['employeeDetails'], ...employeeDetails];

    acc['employeeSalaryDetails'] = [...(acc['employeeSalaryDetails'] || []), ...employeeSalaryDetails];

    return acc;

},{})];


console.log(result);


查看完整回答
反對(duì) 回復(fù) 2022-10-21
?
慕工程0101907

TA貢獻(xiàn)1887條經(jīng)驗(yàn) 獲得超5個(gè)贊

/**

 * 

 * @param {item[]} arr 

 * @param {(item)=>item[<GroupField>]} g 

 * @returns 

 */

function groupBy ( arr, g ) {

    let len = arr.length

    for ( let i = 0; i < len; i++ ) {

        const a = arr.pop();

        const b = g( a );

        const c = arr.find( e => e.d == b )

        if ( c ) {

            c.e.push( a )

        } else {

            arr.unshift( ( {

                d: g( a ),

                e: [ a ]

            } ) )

        }

    }

    return arr.map( e => ( { [ e.d ]: e.e } ) ).reduce( ( p, c ) => ( { ...p, ...c } ) );

}



const result = groupBy( [

    { name: 'a', group: 1 },

    { name: "b", group: 1 },

    { name: "c", group: 10 }

], ( item ) => item.group );



console.log( result );


查看完整回答
反對(duì) 回復(fù) 2022-10-21
?
慕的地8271018

TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超4個(gè)贊

假設(shè)您的數(shù)組將只包含一個(gè)對(duì)象,則以下代碼將起作用。


    let employeeDetails = [{ "employeeDetails": [{ "empID": "XXYYZZ11", "firstname": "abc", "joinedAt": "13/04/2014", "address": "VVGGHHNN" }], "employeeSalaryDetails": [{ "month": "Jan", "salaryAmount": "35000", "Bank": "XXXXX", "PfAccnum": "XXAAQQWWWWQ" }] }, { "employeeDetails": [{ "empID": "XXYYZZ11", "firstname": "abc", "joinedAt": "13/04/2014", "address": "VVGGHHNN" }], "employeeSalaryDetails": [{ "month": "Feb", "salaryAmount": "35000", "Bank": "XXXXX", "PfAccnum": "XXAAQQWWWWQ" }] }]

    function getEmployeeDetails(id){

        let employeeDetail = {employeeDetails:[],employeeSalaryDetails:[]};

        employeeDetails.forEach(function(eachDetail){

            let ed = eachDetail.employeeDetails[0];

            let es = eachDetail.employeeSalaryDetails[0];

            if(ed.empID == id){

                employeeDetail.employeeDetails = ed;

                employeeDetail.employeeSalaryDetails.push(es);

            }

        });

        return [employeeDetail];

    }

    console.log(getEmployeeDetails("XXYYZZ11"));


查看完整回答
反對(duì) 回復(fù) 2022-10-21
  • 4 回答
  • 0 關(guān)注
  • 135 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)