2016-04-12 8 views
0

私は アレイとhighchart JSONデータを取得するためにJavaScriptで処理するオブジェクト

var emplyeeinfo=[{ 
    empNo: 12302, 
    empId: '30984', 
    empJobCategory: 'Designer', 
    }, 
    { 
    empNo: 14785, 
    empId: '33420', 
    empJobCategory: 'Associate Manager', 
    }, 
    { 
    empNo: 13710, 
    empId: '32603', 
    empJobCategory: 'Designer', 
    }, 
    { 
    empNo: 13783, 
    empId: '32675', 
    empJobCategory: 'Designer', 
    }, 
    { 
    empNo: 15069, 
    empId: '33619', 
    empJobCategory: 'Designer', 
    }, 
    { 
    empNo: 14285, 
    empId: '33020', 
    empJobCategory: 'Validator', 
    }, 
    { 
    empNo: 14476, 
    empId: '33185', 
    empJobCategory: 'Designer', 
    }]; 

のJavaScript

の従業員情報の配列構造を持っており、

var employeejob=[{'Designer':[12302,13710,13783,15069,14476]}, 
        {'Associate Manager':[14785]}, 
        {'Validator':'[14285]} 
        ]; 

私はいずれかを見つけることができませんでした上記の情報から、アレイを構築したいですJavaScriptとこの配列からこの配列を構築する適切なメカニズムは、高チャートシリーズ用に次の配列を作成したいと考えています。

var finalchart={series:[7,5,1,1], 
category:['Total','Designer','Associate Manager','Validator']}; 
+0

バックエンドの人のように、正確なデータを送信したくないようです。 –

+0

私は正確なデータを提供しました –

+0

@anagha親和性あなたはemployeejobのオブジェクトを構築し、メインループをループして、従業員の仕事に必要なspeceficプロパティを追加することができます – uzaif

答えて

3

はこれを試してみてください:

// Your new object 
var obj = {}; 
// loop through the objects in array 
employeeinfo.map(function(e){ 
    // check if the object is already created or not 
    if(!obj[e.empJobCategory]){ 
     // if not created then initialize it as an array 
     obj[e.empJobCategory] = []; 
    } 
    // push the new empNo in the created/present array 
    obj[e.empJobCategory].push(e.empNo); 
}); 

// see the output 
console.dir(obj); 

Working Fiddle

Array.reduce()を使用して行うことができます。

var obj = employeeinfo.reduce(function(p, c, i, a) { 
    if (!p[c.empJobCategory]) { 
    p[c.empJobCategory] = []; 
    } 
    p[c.empJobCategory].push(c.empNo); 
    return p; 
}, {}); 

console.dir(obj); 

Working Fiddle

+0

素敵な解決策:-) –

0

あなたが別の方法次に

function groupBy(array , f) 
{ 
    var groups = {}; 
    array.forEach(function(o) 
    { 
    var group = JSON.stringify(f(o)); 
    groups[group] = groups[group] || []; 
    groups[group].push(o.empNo); 
    }); 
    return Object.keys(groups).map(function(group) 
    { 
    return groups[group]; 
    }) 
} 

var result = groupBy(employeeinfo, function(item) 
{ 
    return [item.empJobCategory]; 
}); 

印刷を試すことができます

console.dir(result) 
関連する問題