Как выбрать конкретное поле из массива JavaScript - PullRequest
6 голосов
/ 24 августа 2011

У меня есть объект массива в JavaScript. Я бы выбрал конкретное поле из всех строк объекта.

У меня есть такой объект, как

var sample = {
[Name:"a",Age:1],
[Name:"b",Age:2],
[Name:"c",Age:3]
}

Я хотел бы получить вывод только Имен как ["a","b","c"] без зацикливания образца объекта.

Как выбрать одно или два поля с помощью jlinq? или любой другой плагин?

Большое спасибо.

Ответы [ 4 ]

5 голосов
/ 24 августа 2011

Вы можете попробовать это:

var sample = [{Name:"a", Age:1}, {Name:"b", Age:2}, {Name:"c", Age:3}];
var Names = sample.map(function(item){return item.Name;});
5 голосов
/ 24 августа 2011

Вы ошиблись в своем определении.Вместо того, чтобы иметь объект, содержащий 3 массива, вам нужен массив объектов.

, например:

var sample = [{Name:"a",Age:1},
   {Name:"b",Age:2},
   {Name:"c",Age:3}];

Тогда вы можете сделать:

var name0 = sample[0].Name;
var age0 = sample[0].Age;

илиполучите все ваши имена в соответствии с вашим примером:

var names = [sample[0].Name,sample[1].Name,sample[2].Name];

Но, без зацикливания, я не уверен, как вы получите любое количество значений .... почему бы не зацикливание?

Просто скажите, что выВыполните цикл, вот как вы это сделаете:

var names = []
for(x in sample)
   names.push(sample[x].Name);

или с jQuery (который все еще находится в цикле)

sample= jQuery.map(sample, function(n, i){
  return n.Name;
});
1 голос
/ 24 августа 2011

Этот Javascript не имеет смысла.Это синтетически неверно.Я предполагаю, что вы имели в виду:

var sample = [
    {Name:"a",Age:1},
    {Name:"b",Age:2},
    {Name:"c",Age:3}
]

Тогда вы можете использовать jQuery, чтобы сделать что-то вроде этого:

var names = $(sample).map(function(){ return this.Name; });

Но на самом деле все, что делает jQuery - это циклический обход объекта для вас.Написание собственного цикла было бы (незначительно) быстрее.Нет способа сделать это без цикла.

0 голосов
/ 24 августа 2011
// assuming you mean:
var sample = [
    {Name:"a",Age:1},
    {Name:"b",Age:2},
    {Name:"c",Age:3}
]

Ну, ваша самая большая проблема в том, что независимо от того, что произойдет, вам придется зацикливаться. Теперь jQuery позволит вам скрыть это поведение с помощью:

var output = []
$.each( sample, function(i,e){ output.push( e.Name )} );

Но, по сути, это то же самое, что и:

for( var i = 0; i < sample.length; i++ )
{
   output.push( v.Name )
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...