How to select a particular field from javascript array

对着背影说爱祢 提交于 2020-05-08 02:28:09

问题


I have an array object in javascript. I would to select a particular field from all the rows of the object.

I have an object like

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

I would like to get an output of only Names as ["a","b","c"] without looping over sample object.

How can I select one or two fields using jlinq? or any other plugin?

Thanks a lot.


回答1:


You've got your definition the wrong way round. Instead of having an object containing 3 arrays, you want an array of objects.

like this:

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

Then you can do:

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

or to get all your names as per your example:

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

But, without looping im not sure how you would get any number of values.... why no looping?

Just say you do loop, here's how you would do it:

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

or with jQuery (which is still looping)

sample= jQuery.map(sample, function(n, i){
  return n.Name;
});



回答2:


You can try this:

var sample = [{Name:"a", Age:1}, {Name:"b", Age:2}, {Name:"c", Age:3}];
var Names = sample.map(function(item){return item.Name;});



回答3:


That Javascript has no meaning. It is syntatically incorrect. I assume you meant:

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

Then you can use jQuery to do something like this:

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

But in reality all jQuery is doing is looping through the object for you. Writing your own loop would be (insignificantly) faster. There is no way to do this without a loop.




回答4:


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

Well, your biggest problem there is that no matter what happens, you'll have to loop. Now, jQuery will let you hide that behavior with:

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

But fundamentally, that is the same thing as:

for( var i = 0; i < sample.length; i++ )
{
   output.push( v.Name )
}


来源:https://stackoverflow.com/questions/7172277/how-to-select-a-particular-field-from-javascript-array

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!