2015-08-26 2 views
-2

У меня есть строка JSON: [ { name: 'Bob' }, { name: 'Kim' }, { name: 'Jack' } ] и я хочу сохранить весь список имен в массиве. Есть ли правильный способ сделать это, а не цикл?JSON манипуляции в Node.js

+0

Вы можете получить информацию из строки с RegEx –

+2

Это недопустимое JSON. Пожалуйста, не вызывайте только какой-либо объект JavaScript JSON ... – kay

ответ

3

Попробуйте использовать Array.prototype.map():

[{name: 'Bob'}, {name: 'Kim'}, {name: 'Jack'}].map(function(x) {return x.name}); 

Если это строка, вам нужно позвонить JSON.parse() перед тем, как что:

var json = JSON.parse('[{"name": "Bob"}, {"name": "Kim"}, {"name": "Jack"}]'); 
var names = json.map(function(x) {return x.name}); 

Обратите внимание, что вы должны использовать двойные кавычки вместо апострофа, чтобы сделать это действительная строка JSON.

+1

Не забывайте, что 'map' будет делать цикл за кулисами –

+1

@VsevolodGoloviznin Я бы сказал, что каждый скрипт Node.js будет каким-то образом зацикливаться. – robertklep

1

Ваша строка должна выглядеть следующим образом:

var str = '[{ "name": "Bob" }, { "name": "Kim" }, { "name": "Jack" } ]'; 

Затем вы можете использовать:

var jsonObj = JSON.parse(str); 

Чтобы извлечь имена использовать функцию из Gothdo:

var names = jsonObj.map(function(x) {return x.name}); 

Вот скрипка: https://jsfiddle.net/qjn46u4z/4/

+0

'ReferenceError: $ не определен' – robertklep

+0

Он также работает с простым javascript - отредактировал мой ответ – lightstalker89

+1

@ lightstalker89 как это извлекает имена, правда? – robertklep

Смежные вопросы