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