javascript在数组中查找对象名称

时间:2016-07-31 01:22:21

标签: javascript

a=[{'report1':{'name':'Texas'}},{'report2':{'name':'Virginia'}}]

从上面的javascript对象我只需要提取' report1'宾语。 我可以使用foreach迭代' a'但不知何故需要提取报告1'对象

5 个答案:

答案 0 :(得分:2)

您可以尝试使用filter

var report1 = a.filter(function(obj){ return obj['report1'] })[0]

report1将是一个对象,或未定义

大多数新浏览器可能支持在ES5中引入。

请参阅:http://kangax.github.io/compat-table/es5/#test-Array_methods_Array.prototype.filter

答案 1 :(得分:2)

我能想到的最短路线是使用.find() method

var obj = a.find(o => o['report1']);

如果数组中没有匹配元素,结果将为undefined。请注意,.find()是一种ES6方法,但如果您需要,可以将a polyfill用于旧浏览器。

要访问report1引用的对象,您可以说obj['report1']

在上下文中:



var a=[{'report1':{'name':'Texas'}},{'report2':{'name':'Virginia'}}];

var reportToFind = 'report1';

var obj = a.find(o => o[reportToFind]);

console.log(obj);
console.log(obj[reportToFind]);       // {'name':'Texas'}
console.log(obj[reportToFind].name);  // 'texas'




答案 2 :(得分:1)

这是获取它的一种方法:

var report1 = null;

for ( var i = 0, len = a.length; i < len; i++ )
{
  if ( 'report1' in a[i] )
  {
    report1 = a[i].report1;
    break;
  }
}

演示:

&#13;
&#13;
a=[{'report1':{'name':'Texas'}},{'report2':{'name':'Virginia'}}];

var report1 = null;
    
for ( var i = 0, len = a.length; i < len; i++ )
{
  if ( 'report1' in a[i] )
  {
    report1 = a[i].report1;
    break;
  }
}

console.log('report1', report1);
&#13;
&#13;
&#13;

答案 3 :(得分:1)

您可以使用JSON.stringify()JSON.parse()String.prototype.replace()

var a = [{'report1':{'name':'Texas'}},{'report2':{'name':'Virginia'}}];

var res = JSON.parse(JSON.stringify(a, ["report1", "name"])
          .replace(/,\{\}/, ""));

console.log(res)

答案 4 :(得分:0)

var a=[{'report1':{'name':'Texas'}},{'report2':{'name':'Virginia'}}]
for(var report in a){
 var reportRow = a[report];
 if(reportRow['report1']){
 var report1Extract = reportRow;
 }
}
console.log(report1Extract);