a=[{'report1':{'name':'Texas'}},{'report2':{'name':'Virginia'}}]
从上面的javascript对象我只需要提取' report1'宾语。 我可以使用foreach迭代' a'但不知何故需要提取报告1'对象
答案 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;
}
}
演示:
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;
答案 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);