2016-11-10 18 views
1

salesDataを分割しようとしていますが、各オブジェクトの後にコンマでsplit()が必要です。split関数が機能しない理由があります

これは宿題です。オブジェクトマップに保存して計算しています。 今のところ、splitの機能が失敗することはありません。

私は、最も収益性の高い部門が何であるかを最終結果として示すために以下のコードを提供しました。

var salesData = [ 
{department : 'hardware', sales : 4500, day : 'Monday'}, 
{department : 'outdoor', sales : 1500, day : 'Monday'}, 
{department : 'carpentry', sales : 5500, day : 'Monday'}, 
{department : 'hardware', sales : 7500, day : 'Tuesday'}, 
{department : 'outdoor', sales : 2505, day : 'Tuesday'}, 
{department : 'carpentry', sales : 1540, day : 'Tuesday'}, 
{department : 'hardware', sales : 1500, day : 'Wednesday'}, 
{department : 'outdoor', sales : 8507, day : 'Wednesday'}, 
{department : 'carpentry', sales : 8009, day : 'Wednesday'}, 
{department : 'hardware', sales : 12000, day : 'Thursday'}, 
{department : 'outdoor', sales : 18007, day : 'Thursday'}, 
{department : 'carpentry', sales : 6109, day : 'Thursday'}, 
{department : 'hardware', sales : 7005, day : 'Friday'}, 
{department : 'outdoor', sales : 12006, day : 'Friday'}, 
{department : 'carpentry', sales : 16109, day : 'Friday'}, 
]; 

var departmentMap = {}; 

function mostProfitableDepartment() { 
var departmentSplit = salesData.split(','); 

    for (var i = 0; i < departmentSplit.length; i++) { 
    var currentDep = departmentSplit[i] 
    if (departmentMap[currentDep] === undefined) { 
    departmentMap[currentDep] = 0; 
    } 
    departmentMap[currentDep] = departmentMap[currentDep]++ 
} 
console.log(departmentMap); 
}mostProfitableDepartment(salesData); 
+1

'SALESDATAを取得するのforeachを使用することができますつまり、この

var departments = []; angular.forEach(salesData, function (d) { if(departments[d.department]){ departments[d.department] = departments[d.department] + d.sales; }else{ departments[d.department] = d.sales; } }); 

ような何かをしたいという思い'は、それを反復するために' for'ループを使用する配列です。あなたは何を分割したいのですか? – Satpal

+0

オブジェクトマップに同じ名前の部門をすべて集めて、最も収益性の高い部門を売りにしたいのですが、 – Duvall912

+0

これは宿題なので、何かを学ぶでしょう – Satpal

答えて

0

あなたは、配列のためのあなたの反復構造を使用することができArray.prototype.reduce()

var salesData = [ 
 
{department : 'hardware', sales : 4500, day : 'Monday'}, 
 
{department : 'outdoor', sales : 1500, day : 'Monday'}, 
 
{department : 'carpentry', sales : 5500, day : 'Monday'}, 
 
{department : 'hardware', sales : 7500, day : 'Tuesday'}, 
 
{department : 'outdoor', sales : 2505, day : 'Tuesday'}, 
 
{department : 'carpentry', sales : 1540, day : 'Tuesday'}, 
 
{department : 'hardware', sales : 1500, day : 'Wednesday'}, 
 
{department : 'outdoor', sales : 8507, day : 'Wednesday'}, 
 
{department : 'carpentry', sales : 8009, day : 'Wednesday'}, 
 
{department : 'hardware', sales : 12000, day : 'Thursday'}, 
 
{department : 'outdoor', sales : 18007, day : 'Thursday'}, 
 
{department : 'carpentry', sales : 6109, day : 'Thursday'}, 
 
{department : 'hardware', sales : 7005, day : 'Friday'}, 
 
{department : 'outdoor', sales : 12006, day : 'Friday'}, 
 
{department : 'carpentry', sales : 16109, day : 'Friday'}, 
 
], 
 

 
     deptMap = salesData.reduce((p,c) => p[c.department] ? (p[c.department].push({sales: c.sales, 
 
     \t                    day: c.day}),p) 
 
     \t             : (p[c.department] = [{sales: c.sales, 
 
     \t                   day: c.day}],p) ,{}); 
 
console.log(deptMap);

+0

もっと簡単な方法でそれを明確にすることはできますか? @Redu – Duvall912

+0

あなたは 'ced'を減らしたので削除しましたか? – Mahi

+0

@ Duvall912私は、初期値が空のオブジェクト '{}'であるreduce関数を使用しています。この初期値は、 'c'をコールバックで' p'引数に代入すると 'c'が反復処理の現在のオブジェクトです。したがって 'p [c.department]'が存在しない場合、 'p [c.department] = [{sales:c.sales、day:c.day}]のような最初の項目を配列として割り当てます。 、p) '。カンマ演算子の後の最後の 'p'は、実際に' return p'命令のようなものです。 'p [c.department] .push({sales:c.sales、day:c.day})のような新しいオブジェクトを追加する前に' p [c.department] '。 – Redu

0

を利用することにより、次のようにあなたがするかもしれない、あなたが既に持っています。次に、部門のプロパティを実際の部門とし、売上をカウントします。

var salesData = [{ department: 'hardware', sales: 4500, day: 'Monday' }, { department: 'outdoor', sales: 1500, day: 'Monday' }, { department: 'carpentry', sales: 5500, day: 'Monday' }, { department: 'hardware', sales: 7500, day: 'Tuesday' }, { department: 'outdoor', sales: 2505, day: 'Tuesday' }, { department: 'carpentry', sales: 1540, day: 'Tuesday' }, { department: 'hardware', sales: 1500, day: 'Wednesday' }, { department: 'outdoor', sales: 8507, day: 'Wednesday' }, { department: 'carpentry', sales: 8009, day: 'Wednesday' }, { department: 'hardware', sales: 12000, day: 'Thursday' }, { department: 'outdoor', sales: 18007, day: 'Thursday' }, { department: 'carpentry', sales: 6109, day: 'Thursday' }, { department: 'hardware', sales: 7005, day: 'Friday' }, { department: 'outdoor', sales: 12006, day: 'Friday' }, { department: 'carpentry', sales: 16109, day: 'Friday' }], 
 
    departmentMap = {}; 
 

 
function mostProfitableDepartment() { 
 
    var currentDep, i; 
 
    for (i = 0; i < salesData.length; i++) { 
 
     currentDep = salesData[i].department; 
 
     if (!departmentMap[currentDep]) { 
 
      departmentMap[currentDep] = 0; 
 
     } 
 
     departmentMap[currentDep] += salesData[i].sales; 
 
    } 
 
} 
 

 
mostProfitableDepartment(salesData); 
 

 
console.log(departmentMap);

Array#forEachと、より簡潔なスタイルで、上記のようにSAM。

var salesData = [{ department: 'hardware', sales: 4500, day: 'Monday' }, { department: 'outdoor', sales: 1500, day: 'Monday' }, { department: 'carpentry', sales: 5500, day: 'Monday' }, { department: 'hardware', sales: 7500, day: 'Tuesday' }, { department: 'outdoor', sales: 2505, day: 'Tuesday' }, { department: 'carpentry', sales: 1540, day: 'Tuesday' }, { department: 'hardware', sales: 1500, day: 'Wednesday' }, { department: 'outdoor', sales: 8507, day: 'Wednesday' }, { department: 'carpentry', sales: 8009, day: 'Wednesday' }, { department: 'hardware', sales: 12000, day: 'Thursday' }, { department: 'outdoor', sales: 18007, day: 'Thursday' }, { department: 'carpentry', sales: 6109, day: 'Thursday' }, { department: 'hardware', sales: 7005, day: 'Friday' }, { department: 'outdoor', sales: 12006, day: 'Friday' }, { department: 'carpentry', sales: 16109, day: 'Friday' }], 
 
    departmentMap = {}; 
 

 
function mostProfitableDepartment() { 
 
    salesData.forEach(function (item) { 
 
     departmentMap[item.department] = (departmentMap[item.department] || 0) + item.sales; 
 
    }); 
 
} 
 

 
mostProfitableDepartment(salesData); 
 

 
console.log(departmentMap);

0

私はあなたがJSONとしてSALESDATAを検討し、その値

関連する問題