-1

このようなオブジェクト配列があります

[
      {bookName:"javascript",authorName:"john"},
      {bookName:"java",authorName:"peter"},
      {bookName:"j2ee",authorName:"john"},
      {bookName:".net",authorName:"peter"},
      {bookName:"oracle",authorName:"peter"}];

ロジックを試してみましたが、正しく取得できませんでした。このように整理したい..

{
peter:{
    [{bookName:"java",authorName:"peter"},

    {bookName:".net",authorName:"peter"},

    {bookName:"oracle",authorName:"peter"} ]

     } ,
john :{
    [{bookName:"j2ee",authorName:"john"},

    {bookName:"javascript",authorName:"john"}]

    }

}.

どうすればそれを行うことができます..事前に感謝..

var obj={};
var objArr = given objectarray;
for(var i=0;i<objArr.length.i++ ){
  objArr[objArr[i].authorName]=objArr[i];    
}

var obj={};
var objArr = given objectarray;
for(var i=0;i<objArr.length.i++ ){
  var arr=[];
  objArr[objArr[i].authorName]=arr.push(objArr[i]);    
}
4

2 に答える 2

2

あなたはこれを行うことができます:

var b = ... your object ...
var m = {};
b.map(function(v){(m[v.authorName]=m[v.authorName]||[]).push(v)});

デモンストレーション (コンソールを開く)

于 2012-12-10T16:44:10.713 に答える
1

http://jsfiddle.net/azqRu/

var array = [
          {bookName:"javascript",authorName:"john"},
          {bookName:"java",authorName:"peter"},
          {bookName:"j2ee",authorName:"john"},
          {bookName:".net",authorName:"peter"},
          {bookName:"oracle",authorName:"peter"}
    ];

    var items = {};
    for(var i = 0, ii = array.length; i < ii; i++) {
        var cell = array[i];
        items[cell.authorName] = items[cell.authorName] || [];
        items[cell.authorName].push(cell);
    }    

    alert(items["peter"]);
于 2012-12-10T16:47:03.490 に答える