【问题标题】:JSON Parse to get objects within arrayJSON Parse 以获取数组中的对象
【发布时间】:2019-04-26 12:39:18
【问题描述】:

我以前从来没有做过这样的事情,并且正在努力让它工作,我在网上尝试了不同的代码示例,但没有任何乐趣。

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

我只能使用 ES5。

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

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

任何提示/要点?如您所知,我是新手!

谢谢。

【问题讨论】:

  • 我猜你在循环结束后对counter 做了一些事情。您并没有真正在该循环中显示太多代码来了解您如何使用该变量
  • 我建议您不要将图像用于此类问题,如果您提供代码来复制并开始工作,那么协作会更容易。它还允许您避免隐藏敏感信息。这些以及其他优势

标签: javascript json api parsing ecmascript-5


【解决方案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】:

不确定您需要什么,但我认为它会起作用:

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

【讨论】:

    【解决方案3】:

    正如 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);

    【讨论】:

      猜你喜欢
      • 2015-10-29
      • 2017-09-02
      • 1970-01-01
      • 2013-09-24
      • 2010-12-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多