как построить строку идентификаторов из объекта JSON - PullRequest
0 голосов
/ 12 мая 2010

Мой объект json выглядит так:

User { ID: 234, name: 'john', ..);

Я хочу построить строку из всех идентификаторов.

Как я могу это сделать? есть ли более элегантный способ, чем ниже?

var ids = '';
for(int x = 0; x < json.length; x++)
{
      ids += json[x].Id + ",";
}
// strip trailing id

Ответы [ 3 ]

3 голосов
/ 12 мая 2010

Предполагается, что вы представляете собой массив из нескольких пользователей, что, по-видимому, подразумевает ваш вопрос (хотя приведенный вами пример не является допустимым JSON и не указывает, что существует более одного объекта типа user) ...

var jsonResult = [{ID: 1, name: 'John'}, {ID: 2, name: 'Bob'}];

var ids = jsonResult.map( function(user) {return user.ID;} ).join(',');
// ids will be "1,2"
2 голосов
/ 12 мая 2010

Вы можете создать массив, используйте .push() для добавления элементов и .join() результат после, например:

var ids = [];
for(int x = 0; x < json.length; x++)
{
      ids.push(json[x].Id);
}
var idString = ids.join(',');
0 голосов
/ 12 мая 2010

Для JavaScript 1.8 (ECMA-262 Edition 5) вы можете использовать Array.reduce, чтобы сделать в основном то же самое:

[{id:1},{id:2},{id:3}].reduce(function(a,b) { return a+','+b.id }, '').substr(1)

Если вы предпочитаете накапливать значения в массиве и объединять их в конце, сделайте следующее:

[{id:1},{id:2},{id:3}].reduce(function(a,b) { a.push(b.id); return a }, []).join(',')

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...