2017-05-23 252 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 
      }) 
      }) 

我該如何去添加標籤到各自的id現在?

+0

你的對象似乎代表着你想要什麼已經。 –

回答

1

您需要遍歷每個datatags(一個數組)以獲取標籤名稱。
因此,循環內的另一個循環迭代了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:[「landmark」,「park」]}'而不是'{id:1234,tags:[0:'landmark 「,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:[「landmark」,「park」]}'而不是'{id:1234,tags:[0:'landmark 「,1:」park「]}'(這正是我現在所能提供的) – jonmrich

+0

提供了實際的數據樣本,而不是你在控制檯中看到的。很難操縱那回到真正的數據結構來創建工作演示 – charlietfl

+0

我很想這樣做,但不知何故,我有問題得到那個。我不完全確定數據類型是什麼,以及如何以「原始」格式將其取出。出於某種原因,我一直在爲此而掙扎。建議? – jonmrich