2012-03-07 33 views
3

當我CONSOLE.LOG上一個變量叫 「源」 我得到如下:如何將對象轉換爲JavaScript中的數組?

[Object { 
    name = "Yahoo", value = "yahoo" 
}, 
Object { 
    name = "yahtzee", value = "yahtzee" 
}, 
Object { 
    name = "Yakov Smirnoff", value = "yakov-smirnoff" 
}, 
Object { 
    name = "Yarbrough", value = "yarbrough" 
}, 
Object { 
    name = "yard sales", value = "yard-sales" 
}, 
Object { 
    name = "yarmulke", value = "yarmulke" 
}, 
Object { 
    name = "yawning", value = "yawning" 
}, 
Object { 
    name = "Yeah Yeah Yeahs", value = "yeah-yeah-yeahs" 
}, 
Object { 
    name = "Yeardly Smith", value = "yeardly-smith" 
}, 
Object { 
    name = "YearOne", value = "yearone" 
}, 
Object { 
    name = "Yeasayer", value = "yeasayer" 
}, 
Object { 
    name = "yelle", value = "yelle" 
}, 
Object { 
    name = "yelling", value = "yelling" 
}, 
Object { 
    name = "yellowpages", value = "yellowpages" 
}, 
Object { 
    name = "yellowstone", value = "yellowstone" 
}, 
Object { 
    name = "yemen", value = "yemen" 
}, 
Object { 
    name = "Yeoman", value = "yeoman" 
}, 
Object { 
    name = "Yes Dear", value = "yes-dear" 
}, 
Object { 
    name = "Yes Men", value = "yes-men" 
}, 
Object { 
    name = "yeti", value = "yeti" 
}, 
Object { 
    name = "yiddish", value = "yiddish" 
}, 
Object { 
    name = "ymca", value = "ymca" 
}, 
Object { 
    name = "yodeling", value = "yodeling" 
}, 
Object { 
    name = "yoga", value = "yoga" 
}, 
Object { 
    name = "yogurt", value = "yogurt" 
}, 
Object { 
    name = "Yoko Ono", value = "yoko-ono" 
}, 
Object { 
    name = "Yo-Landi Vi$$er", value = "yo-landi-vier" 
}, 
Object { 
    name = "yo momma", value = "yo-momma" 
}, 
Object { 
    name = "YONKERS", value = "yonkers" 
}, 
Object { 
    name = "yosemite", value = "yosemite" 
}, 
Object { 
    name = "yoshimoto", value = "yoshimoto" 
}, 
Object { 
    name = "Yoshio Yoda", value = "yoshio-yoda" 
}, 
Object { 
    name = "you got served", value = "you-got-served" 
}, 
Object { 
    name = "YourDailyLaughz", value = "yourdailylaughz" 
}, 
Object { 
    name = "yourfavorite", value = "yourfavorite" 
}, 
Object { 
    name = "Yoursie Thomas", value = "yoursie-thomas" 
}, 
Object { 
    name = "You Suck at Photoshop", value = "you-suck-at-photoshop" 
}, 
Object { 
    name = "Youth in Revolt", value = "youth-in-revolt" 
}, 
Object { 
    name = "Youtube Next Lab", value = "youtube-next-lab" 
}, 
Object { 
    name = "YSAP", value = "ysap" 
}, 
Object { 
    name = "yt3d:aspect=16:9", value = "yt3daspect169" 
}, 
Object { 
    name = "yt3d:enable=true", value = "yt3denabletrue" 
}, 
Object { 
    name = "yt3d:metadata=user", value = "yt3dmetadatauser" 
}, 
Object { 
    name = "yt3d:swap=true", value = "yt3dswaptrue" 
}, 
Object { 
    name = "y tu mama tambien", value = "y-tu-mama-tambien" 
}, 
Object { 
    name = "YuGiOh", value = "yugioh" 
}, 
Object { 
    name = "Yugo Koral", value = "yugo-koral" 
}, 
Object { 
    name = "Yuri Baranovsky", value = "yuri-baranovsky" 
}, 
Object { 
    name = "Yvan Attal", value = "yvan-attal" 
}, 
Object { 
    name = "Yvette Nicole Brown", value = "yvette-nicole-brown" 
}, 
Object { 
    name = "yvonne de carlo", value = "yvonne-de-carlo" 
}] 

如果我console.logging之前第一字符串化它:

JSON.stringify(source); 

我得到:

[{ 
    "name": "Yahoo", 
    "value": "yahoo" 
}, { 
    "name": "yahtzee", 
    "value": "yahtzee" 
}, { 
    "name": "Yakov Smirnoff", 
    "value": "yakov-smirnoff" 
}, { 
    "name": "Yarbrough", 
    "value": "yarbrough" 
}, { 
    "name": "yard sales", 
    "value": "yard-sales" 
}, { 
    "name": "yarmulke", 
    "value": "yarmulke" 
}, { 
    "name": "yawning", 
    "value": "yawning" 
}, { 
    "name": "Yeah Yeah Yeahs", 
    "value": "yeah-yeah-yeahs" 
}, { 
    "name": "Yeardly Smith", 
    "value": "yeardly-smith" 
}, { 
    "name": "YearOne", 
    "value": "yearone" 
}, { 
    "name": "Yeasayer", 
    "value": "yeasayer" 
}, { 
    "name": "yelle", 
    "value": "yelle" 
}, { 
    "name": "yelling", 
    "value": "yelling" 
}, { 
    "name": "yellowpages", 
    "value": "yellowpages" 
}, { 
    "name": "yellowstone", 
    "value": "yellowstone" 
}, { 
    "name": "yemen", 
    "value": "yemen" 
}, { 
    "name": "Yeoman", 
    "value": "yeoman" 
}, { 
    "name": "Yes Dear", 
    "value": "yes-dear" 
}, { 
    "name": "Yes Men", 
    "value": "yes-men" 
}, { 
    "name": "yeti", 
    "value": "yeti" 
}, { 
    "name": "yiddish", 
    "value": "yiddish" 
}, { 
    "name": "ymca", 
    "value": "ymca" 
}, { 
    "name": "yodeling", 
    "value": "yodeling" 
}, { 
    "name": "yoga", 
    "value": "yoga" 
}, { 
    "name": "yogurt", 
    "value": "yogurt" 
}, { 
    "name": "Yoko Ono", 
    "value": "yoko-ono" 
}, { 
    "name": "Yo-Landi Vi$$er", 
    "value": "yo-landi-vier" 
}, { 
    "name": "yo momma", 
    "value": "yo-momma" 
}, { 
    "name": "YONKERS", 
    "value": "yonkers" 
}, { 
    "name": "yosemite", 
    "value": "yosemite" 
}, { 
    "name": "yoshimoto", 
    "value": "yoshimoto" 
}, { 
    "name": "Yoshio Yoda", 
    "value": "yoshio-yoda" 
}, { 
    "name": "you got served", 
    "value": "you-got-served" 
}, { 
    "name": "YourDailyLaughz", 
    "value": "yourdailylaughz" 
}, { 
    "name": "yourfavorite", 
    "value": "yourfavorite" 
}, { 
    "name": "Yoursie Thomas", 
    "value": "yoursie-thomas" 
}, { 
    "name": "You Suck at Photoshop", 
    "value": "you-suck-at-photoshop" 
}, { 
    "name": "Youth in Revolt", 
    "value": "youth-in-revolt" 
}, { 
    "name": "Youtube Next Lab", 
    "value": "youtube-next-lab" 
}, { 
    "name": "YSAP", 
    "value": "ysap" 
}, { 
    "name": "yt3d:aspect=16:9", 
    "value": "yt3daspect169" 
}, { 
    "name": "yt3d:enable=true", 
    "value": "yt3denabletrue" 
}, { 
    "name": "yt3d:metadata=user", 
    "value": "yt3dmetadatauser" 
}, { 
    "name": "yt3d:swap=true", 
    "value": "yt3dswaptrue" 
}, { 
    "name": "y tu mama tambien", 
    "value": "y-tu-mama-tambien" 
}, { 
    "name": "YuGiOh", 
    "value": "yugioh" 
}, { 
    "name": "Yugo Koral", 
    "value": "yugo-koral" 
}, { 
    "name": "Yuri Baranovsky", 
    "value": "yuri-baranovsky" 
}, { 
    "name": "Yvan Attal", 
    "value": "yvan-attal" 
}, { 
    "name": "Yvette Nicole Brown", 
    "value": "yvette-nicole-brown" 
}, { 
    "name": "yvonne de carlo", 
    "value": "yvonne-de-carlo" 
}] 

有什麼辦法可以將源代碼轉換爲如下所示的數組:

["Yahoo", "yahtzee", "Yakov Smirnoff", etc...] 

基本上我只需要「名稱」而不是「值」,我需要它們都在一個數組中。如何才能做到這一點?

+1

如果你想使用underscore.js:'_.pluck(ARR, 「名」)'。 – pimvdb 2012-03-07 18:10:43

回答

7

只需使用一個簡單的for循環:

var arr = []; 
for (var i = 0; i < objects.length; i++) { 
    arr.push(objects[i].name); 
} 
+0

感謝這個作品,作爲一種變體,你會知道如何找回像這樣的對象:Yahoo,yahtzee,Yakov Smirnoff,而不是像這樣的數組:[「Yahoo」,「yahtzee」,「Yakov Smirnoff」 ]? – TK123 2012-03-07 18:28:56

+2

@ JakeRow123一個對象沒有意義,因爲每個屬性都需要一個名稱和一個值。一個數組更適合這種類型的集合。什麼是要使用的對象? – 2012-03-07 18:49:35

2

您的外部結構是一個包含一堆對象文字的數組。通過簡單的for循環將每個對象文字的name屬性推送到新的數組上。

var outArray = []; 
for (i=0; i<inArray.length; i++ { 
    outArray.push(inArray[i].name); 
} 

console.log(outArray); 
0
var result = []; 

for (var i in source) 
    result.push(source[i].name); 
+4

對於數組,通常不鼓勵使用JavaScript的'for(... in ...)'。使用'map','filter'等,或者爲數組定義'for'循環,'for(... in ...)'爲對象。 – 2012-03-07 18:15:08

8

作爲替代其他的答案,你可以使用Array.map。但請注意,這是相當新的,並且在舊版瀏覽器中不可用 - 對於這些,我建議使用es5-shim

var names = source.map(function(item) { return item.name }); 

更新:隨着ES6,它會是這個樣子:

const names = source.map(item => item.name) 
相關問題