2017-05-23 13 views
-1

これはしばらくの間行ってきましたが、私が何を持っているのか、どのように扱うのか分かりません。既存のオブジェクトから新しいオブジェクトを作成する

私はconsole.logを使用する場合、私はこれを取り戻す:

description:"Some text here" 
id:1234 
location:Array(1) 
name:"Some Name" 
tags: 
Array(7) 
0:Object 
name:"Landmark" 
public_id:"landmark" 
__proto__ 
1:Object 
name:"Park" 
public_id:"park" 
__proto__ 

私はこのような何かを得るために探しています:

{id:1234,tags:[landmark,park]} 

私はこれでid一部の罰金を得ることができます。

var thePlaces=[]; 
$.each(data, function(index, val) { 
     thePlaces.push({ 
       id:val.id 
      }) 
      }) 

タグをそれぞれに追加するにはどうすればよいですか0今?

+0

あなたのオブジェクトがすでに欲しいものを表しているようです。 –

答えて

1

dataのタグ名を取得するには、tags(配列)を反復する必要があります。
ループ内に別のループがあり、dataを繰り返します。

var thePlaces=[]; 
$.each(data, function(index, val) { 

    var tagNames=[]; 

    $.each(val.tags, function(i,tagVal){ 
    tagNames.push(tagVal.name) 
    } 

    thePlaces.push({ 
    id:val.id, 
    tags: tagNames 
    }); 
}); 
+0

ありがとうございますが、これは私が必要とするものではありません。タグは配列内にあり、私は '{id:1234、tags:[0:"ランドマークの代わりに '{id:1234、tags:[" landmark "、" park "}} "、1:" park "]}'(これは私に今与えられているものです) – jonmrich

+0

オブジェクトを 'JSON.stringify'すると' 0: 'と' 1: 'が表示されます。配列**キーを持つ必要があります**。文字列の整数(連想配列)でもかまいません。オブジェクトは現在のように有効です。 –

1

使用Array#map()は、別の配列に基づいて、新しい配列を作成します。

// map main array 
var thePlaces= data.map(function(item){ 
    // map location array to get tags array 
    var tags = item.location.map(function(loc){ 
     return loc.name; 
    }); 
    // new object to return for each item in "data" 
    return { 
     id: item.id, 
     tags: tags 
    };  
}); 
+0

ありがとうございますが、これは私が必要とするものではありません。タグは配列内にあり、私は '{id:1234、tags:[0:"ランドマークの代わりに '{id:1234、tags:[" landmark "、" park "}} "、1:" park "]}'(これが私に今与えられているものです) – jonmrich

+0

は実際のデータのサンプルを提供します。実際のデータ構造に戻って作業デモを作成するのは難しい – charlietfl

+0

私はそれをしたいと思っていますが、どういうわけかそれを得ることに問題があります。私は、データ型が何であるか、そして "生の"形式でそれをどうやって取得するのかについて完全にはわかっていません。私はいつも何らかの理由でそれと闘ってきました。提案? – jonmrich

関連する問題