私が達成したいのは、IDの最初の2桁が一致する場合、オブジェクトをアレイ内でグループ化することです。この新しい配列にグループIDでオブジェクトのJavaScript配列を配列
[
{
"id": "0100",
"name": "name 1",
"message": "Lorem blah blah 1"
},
{
"id": "0101",
"name": "",
"message": "Lorem blah blah 1.1"
},
{
"id": "0200",
"name": "name 2",
"message": "Lorem blah blah 2"
},
{
"id": "0201",
"name": "",
"message": "Lorem blah blah 2.1"
},
{
"id": "0202",
"name": "",
"message": "Lorem blah blah 2.2"
},
{
"id": "0300",
"name": "name 3",
"message": "Lorem blah blah 3"
},
{
"id": "0301",
"name": "",
"message": "Lorem blah blah 3.1"
},
{
"id": "0302",
"name": "",
"message": "Lorem blah blah 3.2"
},
{
"id": "0303",
"name": "",
"message": "Lorem blah blah 3.3"
},
{
"id": "0304",
"name": "",
"message": "Lorem blah blah 3.4"
}
]
:だから、オブジェクトの以下の配列を指定して、私はこの元の配列を変換したい
[
{
"id": "0100",
"name": "name 1",
"message": [
"Lorem blah blah 1",
"Lorem blah blah 1.1"
]
},
{
"id": "0200",
"name": "name 2",
"message": [
"Lorem blah blah 2",
"Lorem blah blah 2.1",
"Lorem blah blah 2.2"
]
},
{
"id": "0300",
"name": "name 3",
"message": [
"Lorem blah blah 3",
"Lorem blah blah 3.1",
"Lorem blah blah 3.2",
"Lorem blah blah 3.3",
"Lorem blah blah 3.4"
]
}
]
注意すべき重要なことがあり、もしIDの最初の2桁NEW ARRAYのように、これらのオブジェクトにメッセージを追加します。あなたはすべてが見ることができるように
、@Nenad Vracarは、しかし、私はまだ別の配列が関与さらに、問題持って、上記の課題にまともな答えを実証してきました。私は先の
が`var data2 = [{"CandidateName": "Mary", "relatedId": ["0100"]},{ "CandidateName": "John", "relatedId": ["0200"]},{ "CandidateName":"Peter", "relatedId": ["0300"]},{ "CandidateName": "Paul", "relatedId": ["0300"]}];`
プルする」をcandidateName 'を作成し、元の配列 "result"に配列として追加します。
私はdata1.reduceループ内でdata2.forEachループを試しましたが、ハングしているようです。
var result = data.reduce(function(r, el) {
// THIS INNER LOOP MAKES THE BROWSER HANG!!!
data2.forEach(function (a){
console.log('a',a);
});
var e = el.id.slice(0, 2);
if (!o[e]) {
o[e] = {
id: el.id,
name: el.name,
message: []
}
r.push(o[e]);
}
o[e].message.push(el.message);
return r;
}, [])
さらに洗練された洗練された方法がありますか?
私が新鮮な質問として、それをお願いし、私だったら、私は勢いを失うことなく、この質問を拡張するにはどうすればよいソートされた配列 – passion
のようですか?私はここのコメントで私の質問をすることができますか?もしそうなら、ここに行く? –
私はさらなる助けを求めて来ました。私はまだ別の配列を持っています: 'var data2 = [{" CandidateName ":" Mary "、" relatedId ":[" 0100 "]}、{" CandidateName ":" John "、" relatedId ":[" 0200 " {"0300"}}、{"CandidateName": "Paul"、 "relatedId":["0300"]}] ' であり、このうち{I " 'candidateName'を取得して元の配列 "result"に配列として追加したいとします。 私はdata1.reduceループ内でdata2.forEachループを試しましたが、ハングするようです。 もっと洗練された洗練された方法がありますか? –