将Json Array中的数组映射到Angularjs Scope

时间:2016-03-09 09:28:56

标签: javascript arrays angularjs json

我正在尝试将type内的urlmedia2值从此json数组映射到angularjs scope Array

"results":[
    {
        "session2":[
            {
                "__type":"Object",
                "about":"about here",
                "attendant2":{
                    "__type":"Relation",
                    "className":"_User"
                },
                "className":"sessionClass",
                "createdAt":"2015-09-16T06:12:54.461Z",
                "media2":[
                    {
                        "__type":"Object",
                        "priority":1,
                        "type":3,
                        "updatedAt":"2015-09-16T06:12:54.153Z",
                        "url":"https://example.com"
                    }
                ],
                "updatedAt":"2015-09-16T06:12:54.461Z"
            }
        ],
        "updatedAt":"2015-10-16T06:08:57.726Z"
    }
]

我已尝试使用此

$scope.mediaType = results['object'].map(function(item) {
                return item.get('session2')[0].get('media2')[0].get('type');
});

和这个

$scope.mediaType = results['session2'].map(function(item) {
            return item.get('media2')[0].get('type');
});

但它总是给我TypeError: results.object is undefinedTypeError: results.session2 is undefined
我如何从那个json获得价值?

3 个答案:

答案 0 :(得分:1)

结果是一个数组而不是对象,您可以使用results[0].session2.map

来访问它

答案 1 :(得分:1)

试试这个



var x = {
  "results": [{
    "session2": [{
      "__type": "Object",
      "about": "about here",
      "attendant2": {
        "__type": "Relation",
        "className": "_User"
      },
      "className": "sessionClass",
      "createdAt": "2015-09-16T06:12:54.461Z",
      "media2": [{
        "__type": "Object",
        "priority": 1,
        "type": 3,
        "updatedAt": "2015-09-16T06:12:54.153Z",
        "url": "https://www.youtube .com/watch?v=cVjT1QGilAg"
      }],
      "updatedAt": "2015-09-16T06:12:54.461Z"
    }],
    "updatedAt": "2015-10-16T06:08:57.726Z"
  }]
}


var y = x.results.map(function(v) {
  return {
    type: v.session2[0].__type,
    url: v.session2[0].media2[0].url
  }
})
document.write(JSON.stringify(y))




答案 2 :(得分:0)

我在另一个问题的答案中使用这种方式

$scope.mediaType = [];
var media2 = results.get('session2')[0].get('media2');

for (i = 0; i < media2.length; i++) {
    $scope.mediaType.push({
        type: session[i].get('type'),
        url: session[i].get('url'),
    });
};