JSON解析以获取数组内的对象

时间:2018-11-24 01:45:47

标签: javascript json api parsing ecmascript-5

我以前从未做过类似的事情,并且正在努力使它正常工作,我在网上尝试了不同的代码示例,但并不高兴。

我想从下面数组中的5个对象中返回displayName

array example

first

我只能使用ES5。

我尝试了以下操作,但在打印时仅得到第一个对象,而不是全部5个。

for (var i = 0; i < parsed.value.length; i++) {
    var counter = parsed.value[i].displayName;
}

有什么提示/要点吗?如您所知,我是新手!

谢谢。

3 个答案:

答案 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);