4 回答

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>

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);

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 );

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"));
添加回答
舉報(bào)