在我的javascript中,我有一个像这样的json,
var text = '{"employees":['+
'{"firstName":"John","lastName":"Doe" },' +
'{"firstName":"Anna","lastName":"Smith" },' +
'{"firstName":"Peter","lastName":"Jones" }' +
']}';
我使用下面的代码来解析我的json。
obj1 = JSON.parse(text);
我想要做的是将json数组元素存储在js数组中(var chartData1 = [];)。我使用下面的循环在chartData []中存储json数组。通过将数组条件赋予i< 2,我能够成功地将json数组存储在chartData []中。
这是我的For循环,
for( i=0; i<=2; i++)
{
chartData1.push( [ obj1.employees[i]['firstName'], obj1.employees[i]['lastName'] ])
}
我想做的是采取那个&#39; 2&#39;来自for循环中的条件语句,并将其替换为变量或表达式。我在许多线程中搜索,我发现我可以使用obj1.employees.length;
(这样的事情),但这在我的情况下不起作用。由于我完全是js的新手,我想收到专家的一些帮助。我为我的英语感到抱歉。如果我在某个地方出错,请随意指出我。
提前谢谢。
答案 0 :(得分:0)
obj1.employees.length
应该没问题作为上限。我怀疑你使用了错误的比较运算符(<=
而不是<
)。看它工作:
var obj1 = { "employees": [
{ "firstName": "John", "lastName": "Doe" },
{ "firstName": "Anna", "lastName": "Smith" },
{ "firstName": "Peter", "lastName": "Jones" }
]};
var chartData1 = [];
for( i=0; i < obj1.employees.length; i++)
{
chartData1.push( [ obj1.employees[i]['firstName'], obj1.employees[i]['lastName'] ])
}
console.log(JSON.stringify(chartData1));
&#13;
但是,有一个更好,更短的解决方案,利用Array.prototype.map
函数:
var obj1 = { "employees": [
{ "firstName": "John", "lastName": "Doe" },
{ "firstName": "Anna", "lastName": "Smith" },
{ "firstName": "Peter", "lastName": "Jones" }
]};
var chartData1 = obj1.employees.map(e => [e.firstName, e.lastName]);
console.log(JSON.stringify(chartData1));
&#13;
答案 1 :(得分:0)
这也是另一种解决方案:
QGLWidget
答案 2 :(得分:0)
解析text
后,您将获得一个JSON对象,其唯一属性为employees
。基本上,如果您执行var parsedContents = JSON.parse(text);
,则parsedContents
的值为:
{
"employees": [
{ "firstName": "John", "lastName": "Doe" },
{ "firstName": "Anna", "lastName": "Smith" },
{ "firstName": "Peter", "lastName": "Jones" }
]
}
因此,您可以使用employees
获取JSON.parse(text).employees
数组,并使用Array.prototype.forEach
和朋友遍历数组。以下是最终答案:
var employees = JSON.parse(text).employees;
employees.forEach(function (employee) {
chartData1.push(employee.firstName, employee.lastName);
});