私はこれに似た配列を持っています:
[
{part_number: 1, station: 300, description: "cable", qty: 40},
{part_number: 1, station: 40, description: "cable", qty: 20},
{part_number: 2, station: 300, description: "monitor", qty: 12},
{part_number: 3, station: 40, description: "mounting bracket", qty: 33},
]
ngRepeatを使用してアイテムを表示し、一意の部品番号をフィルタリングしています。リストされている各part_numberについて、複数のステーションで各パーツの数量を見つけて、その行の数量フィールドに表示する必要があります。
例:パート1の合計数量は60、ステーション300で40、ステーション40で20です。パート2の合計数量はステーション300で12です。パート3の合計数量はステーション40で33です。
これらの数量を取得する方法や、部品番号で正しく表示する方法がわかりません。どんな助けでもいただければ幸いです。
編集(1):これをあいまいにして申し訳ありません。これは私が試したことがないように見えます。私は高階関数を見てきましたが、この目的を達成するためにどの関数を組み合わせて使用すべきかを判断できません。
.mapを使用して、配列内の各オブジェクトに「数量」のキーと値のペアを追加することは可能でしょうか...次に、ビューに式を追加してこの値を表示するだけですか?
一意にフィルタリングされた配列にこの値を設定する前に、複製されたパーツの累積量を取得する必要があります。
配列をループして合計を計算する必要があります。あなたは以下を試すことができます
html
<div ng-repeat="item in result">
{{item.description}}({{item.part_number}}) - {{item.qty}}
</div>
js
$scope.data = [
{part_number: 1, station: 300, description: "cable", qty: 40},
{part_number: 1, station: 40, description: "cable", qty: 20},
{part_number: 2, station: 300, description: "monitor", qty: 12},
{part_number: 3, station: 40, description: "mounting bracket", qty: 33}
];
$scope.result = [];
$scope.data.reduce(getSum, {});
function getSum(result, item) {
if (!result[item.part_number]) {
result[item.part_number] = { part_number: item.part_number, qty: 0 ,description: item.description};
$scope.result.push(result[item.part_number])
}
result[item.part_number].qty += item.qty;
return result;
}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加