2017-11-07 9 views
2

私はdateidを持つこの種の配列を持っています。グループの配列は、彼らがjavascriptを使用しているのと同じ要素に従います

私はちょうどそれが、これは phpで私のコードです

、私はphpからコードを持っており、それが中にうまく機能し、この

data:[ 
    0:{ 
     0:[id:"1",date:"2017-11-07"] 
    } 
    1:{ 
     0:[id:"2",date:"2017-11-05"], 
     1:[id:"3",date:"2017-11-05"] 
    } 
    2:{ 
     0:[id:"4",date:"2017-11-01"], 
     1:[id:"5",date:"2017-11-01"] 
    }] 

のようにグループ化したい

temp:[ 
    0:{ 
    id:"1" 
    date:"2017-11-07" 
    } 
    1:{ 
    id:"2" 
    date:"2017-11-05" 
    } 
    2:{ 
    id:"3" 
    date:"2017-11-05" 
    } 
    3:{ 
    id:"4" 
    date:"2017-11-01" 
    } 
    4:{ 
    id:"5" 
    date:"2017-11-01" 
    } 
    ] 

$newTemp = array(); 
foreach($temp as $value){ 
    $newTemp[$value['id'].'_'.$value['date']][] = $value; 
} 

しかし、私はそれをどのように使用するのか分かりませんjavascript

は、私はグループ配列

+0

は不適切な場所 – hindmost

+0

でBLOCKQUOTEを使用しないでください、あなたのPHPの例が機能しますか? –

答えて

2

の日はあなたが同じグループを定義するためのハッシュテーブルを取り、結果セットに新しいグループをプッシュすることができなければならないかについて、私のコードで私を助けることができます。

var data = [{ id: "1", date: "2017-11-07" }, { id: "2", date: "2017-11-05" }, { id: "3", date: "2017-11-05" }, { id: "4", date: "2017-11-01" }, { id: "5", date: "2017-11-01" }], 
 
    hash = Object.create(null), 
 
    result = []; 
 

 
data.forEach(function (o) { 
 
    if (!hash[o.date]) { 
 
     hash[o.date] = []; 
 
     result.push(hash[o.date]); 
 
    } 
 
    hash[o.date].push(o); 
 
}); 
 

 
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

+0

javascriptの変数をここで参照していますか?あなたがhash [o.date]にプッシュすると、同じ参照であるため、結果[hash [o.date]]配列も更新されます。 –

+0

@ TahaPaksu、right、どちらも配列と同じ参照を共有しているので、一回押すだけで十分です。 –

+0

説明していただきありがとうございます。私はときどきこれらのことを忘れて、異なる言語でコーディングしています。私はどのように人々があなたの心にこれらのすべての事を保つのだろうか:) –

関連する問題