JSON 解析以获取数组中的对象
JSON Parse to get objects within array
我以前从来没有做过这样的事情,并且正在努力让它工作,我已经在线尝试了不同的代码示例,但没有成功。
我想从下面数组中的 5 个对象中 return displayName
。
我只能使用 ES5。
我尝试了以下方法,但在打印时只得到了第一个对象,而不是所有 5 个对象。
for (var i = 0; i < parsed.value.length; i++) {
var counter = parsed.value[i].displayName;
}
有tips/points吗?如您所知,我是新手!
谢谢。
不确定您到底需要什么,但我认为它会起作用:
var names = parsed.value.map(function(v){ return v.displayName });
现在 names
是一个包含所有 displayName
值的数组。
如果您想要的对象只有 displayName
属性,那么:
var objects = parsed.value.map(function(v) {
return {
displayName: v.displayName
};
});
你可以查看MDN doc for map
正如 Johnny5 所建议的,map 函数在这种情况下是理想的。试试这个近似值,你会得到一个类似于原始数据集的对象数组
const dataset = [
{
classification: null,
createdDateTime: new Date('2018-03-03'),
deletedDateTime: null,
description: 'lorem ipsum',
displayName: 'John Logan',
mail: 'john.logan@domain.com',
}, {
classification: null,
createdDateTime: new Date('2018-03-03'),
deletedDateTime: null,
description: 'lorem ipsum',
displayName: 'Ken Master',
mail: 'ken.master@domain.com',
}, {
classification: null,
createdDateTime: new Date('2018-03-03'),
deletedDateTime: null,
description: 'lorem ipsum',
displayName: 'Samus Aran',
mail: 'samus.aran@domain.com',
}, {
classification: null,
createdDateTime: new Date('2018-03-03'),
deletedDateTime: null,
description: 'lorem ipsum',
displayName: 'King Dede',
mail: 'king.dede@domain.com',
}, {
classification: null,
createdDateTime: new Date('2018-03-03'),
deletedDateTime: null,
description: 'lorem ipsum',
displayName: 'Monkey D Luffy',
mail: 'luffy.monkey@domain.com',
}
];
const displayNames = dataset.map(toDisplayNameView);
function toDisplayNameView(data) {
return {
displayName: data.displayName
};
}
console.log(displayNames);
您还可以看看下面的简单示例。
These examples do not include all the fields from your input data but relevant.
I think, it will be helpful.
var parsed = {
value: [
{fullName: "Ken Thompson", displayName: "Ken", age: 55},
{fullName: "Rob Pike", displayName: "Rob", age: 50},
{fullName: "Robert Griesemer", displayName: "RobertGoog", age: 56},
{fullName: "Ander Hezlsberg", displayName: "AndersMicro", age: 58},
{fullName: "Ryan Dahl", displayName: "Ryan08", age: 40}
]
};
// 1st way to get as an array of objects
var dispNames = parsed.value.map(function(o) { return {displayName: o.displayName}});
console.log(dispNames);
/*
[ { displayName: 'Ken' },
{ displayName: 'Rob' },
{ displayName: 'RobertGoog' },
{ displayName: 'AndersMicro' },
{ displayName: 'Ryan08' } ]
*/
// 2nd way to get as a list of displayNames
var dispNames2 = parsed.value.map(function(o) { return o.displayName});
console.log(dispNames2);
/*
[ 'Ken', 'Rob', 'RobertGoog', 'AndersMicro', 'Ryan08' ]
*/
// 3rd way to get as a string with displayNames separated with comma(,)
console. log(dispNames2.join(","));
/*
Ken,Rob,RobertGoog,AndersMicro,Ryan08
*/
如果你想得到如上面第三种方式所示的结果,这里是最简单的方法,无需使用在数组对象上定义的 join() 方法。
console.log("" + dispNames2);
// Ken,Rob,RobertGoog,AndersMicro,Ryan08
我以前从来没有做过这样的事情,并且正在努力让它工作,我已经在线尝试了不同的代码示例,但没有成功。
我想从下面数组中的 5 个对象中 return displayName
。
我只能使用 ES5。
我尝试了以下方法,但在打印时只得到了第一个对象,而不是所有 5 个对象。
for (var i = 0; i < parsed.value.length; i++) {
var counter = parsed.value[i].displayName;
}
有tips/points吗?如您所知,我是新手!
谢谢。
不确定您到底需要什么,但我认为它会起作用:
var names = parsed.value.map(function(v){ return v.displayName });
现在 names
是一个包含所有 displayName
值的数组。
如果您想要的对象只有 displayName
属性,那么:
var objects = parsed.value.map(function(v) {
return {
displayName: v.displayName
};
});
你可以查看MDN doc for map
正如 Johnny5 所建议的,map 函数在这种情况下是理想的。试试这个近似值,你会得到一个类似于原始数据集的对象数组
const dataset = [
{
classification: null,
createdDateTime: new Date('2018-03-03'),
deletedDateTime: null,
description: 'lorem ipsum',
displayName: 'John Logan',
mail: 'john.logan@domain.com',
}, {
classification: null,
createdDateTime: new Date('2018-03-03'),
deletedDateTime: null,
description: 'lorem ipsum',
displayName: 'Ken Master',
mail: 'ken.master@domain.com',
}, {
classification: null,
createdDateTime: new Date('2018-03-03'),
deletedDateTime: null,
description: 'lorem ipsum',
displayName: 'Samus Aran',
mail: 'samus.aran@domain.com',
}, {
classification: null,
createdDateTime: new Date('2018-03-03'),
deletedDateTime: null,
description: 'lorem ipsum',
displayName: 'King Dede',
mail: 'king.dede@domain.com',
}, {
classification: null,
createdDateTime: new Date('2018-03-03'),
deletedDateTime: null,
description: 'lorem ipsum',
displayName: 'Monkey D Luffy',
mail: 'luffy.monkey@domain.com',
}
];
const displayNames = dataset.map(toDisplayNameView);
function toDisplayNameView(data) {
return {
displayName: data.displayName
};
}
console.log(displayNames);
您还可以看看下面的简单示例。
These examples do not include all the fields from your input data but relevant.
I think, it will be helpful.
var parsed = {
value: [
{fullName: "Ken Thompson", displayName: "Ken", age: 55},
{fullName: "Rob Pike", displayName: "Rob", age: 50},
{fullName: "Robert Griesemer", displayName: "RobertGoog", age: 56},
{fullName: "Ander Hezlsberg", displayName: "AndersMicro", age: 58},
{fullName: "Ryan Dahl", displayName: "Ryan08", age: 40}
]
};
// 1st way to get as an array of objects
var dispNames = parsed.value.map(function(o) { return {displayName: o.displayName}});
console.log(dispNames);
/*
[ { displayName: 'Ken' },
{ displayName: 'Rob' },
{ displayName: 'RobertGoog' },
{ displayName: 'AndersMicro' },
{ displayName: 'Ryan08' } ]
*/
// 2nd way to get as a list of displayNames
var dispNames2 = parsed.value.map(function(o) { return o.displayName});
console.log(dispNames2);
/*
[ 'Ken', 'Rob', 'RobertGoog', 'AndersMicro', 'Ryan08' ]
*/
// 3rd way to get as a string with displayNames separated with comma(,)
console. log(dispNames2.join(","));
/*
Ken,Rob,RobertGoog,AndersMicro,Ryan08
*/
如果你想得到如上面第三种方式所示的结果,这里是最简单的方法,无需使用在数组对象上定义的 join() 方法。
console.log("" + dispNames2);
// Ken,Rob,RobertGoog,AndersMicro,Ryan08