-1

2 つの配列をオブジェクトの配列に結合しようとしていますが、それに苦労しています。

例:

arr1 = [a,b,c];
arr2 = [a,a,a,b,b,c,d,d];

これら2つを組み合わせたい方法:

combinedArr = [
    {name: a, amount: 3}, 
    {name: b, amount: 2}, 
    {name: c, amount: 1}
];

arr1 に格納されている値のみを統合する必要があることに注意してください。arr1 に存在しない arr2 の値は除外されます。(この例では「d」です)

また、知っておくべき重要なことは、これを After Effect の Extendscript に使用しているため、ECMA-262 標準の第 3 版に制限され、古き良き古典的な JavaScript が残っていることです。連結、スライス、結合などの機能は利用できません。

私は自分のやり方を試しましたが、それを理解することはできません..配列を介して2つまたは3つのスマートループだけで解決策を達成できると確信しています.

前もって感謝します、サイモン

編集:私は自分の問題に自分の試みを追加しないことで混乱を引き起こしました。すみません、一晩中考えていて、電車の中で電話でこの質問を書きました。

私はすでに非常に満足している驚くべき回答を受け取っています。私の質問について悪い意味がなかったことを証明するために、以前に書いたものを投稿します(単純化されていませんが、実際のコードから):

var createMarkerList = function() {
    var subList = _createMarkerListSub(); //in this example arr1
    var masterList = _createMarkerListMaster(); //in this example arr2
    var output = [];

    for(var i=0;i<subList.length;i++){
        var uniqueMarker = subList[i];
        output.push({
            name: uniqueMarker,
            amount: 0,
        });
    }

    for(var i=0;i<masterList.length;i++){
        var genericMarker = masterList[i];

        if(output[i].name == genericMarker){
            output[i].amount = output[i].amount +1;
        }
    }
}

理解しようとせずに答えを尋ねるだけで簡単な方法を見つけようとしたわけではないことに注意してください。何らかの理由で頭を悩ませただけです。

4

2 に答える 2