我以前从未做过类似的事情,并且正在努力使它正常工作,我在网上尝试了不同的代码示例,但并不高兴。
我想从下面数组中的5个对象中返回displayName
。
我只能使用ES5。
我尝试了以下操作,但在打印时仅得到第一个对象,而不是全部5个。
for (var i = 0; i < parsed.value.length; i++) {
var counter = parsed.value[i].displayName;
}
有什么提示/要点吗?如您所知,我是新手!
谢谢。
答案 0 :(得分:1)
不确定您到底需要什么,但我认为它可以工作:
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
答案 1 :(得分:1)
您还可以查看以下简单示例。
这些示例未包含输入数据中的所有字段,而是相关的。
我认为这会有所帮助。
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
*/
如果您希望如上述第3种方法所示获得结果,这是最简单的方法,而无需使用在数组对象上定义的 join()方法。
console.log("" + dispNames2);
// Ken,Rob,RobertGoog,AndersMicro,Ryan08
答案 2 :(得分:0)
正如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);