2012-03-07 2 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" 
}] 

Если я stringify его перед 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 (обр, "имя")'. – pimvdb

ответ

7

Просто используйте простой цикл:

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

+2

@ JakeRow123 Объект не имеет смысла, потому что для каждого свойства потребуется имя и значение. Массив более подходит для такого типа коллекций. Для чего нужен объект? –

2

Ваша внешняя структура представляет собой массив, содержащий кучу объектных литералов. Нажмите свойство 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 ...) 'для объектов. –

8

В качестве альтернативы других ответов, вы можете использовать Array.map. Заметьте, однако, что он довольно новый и недоступен в старых браузерах - для них я рекомендую es5-shim.

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

Update: С ES6, это будет выглядеть примерно так:

const names = source.map(item => item.name) 
Смежные вопросы