如何使用JS访问多个对象中的特定属性

时间:2016-04-21 03:00:32

标签: javascript arrays angularjs object properties

这是我的目标:

$scope.info = [];
$scope.info = [{"name":"kanye","size":"","folder":"Folder"},{"name":"west","size":"","folder":"Folder"}]
$scope.infoObj = $scope.info.name;
console.log($scope.infoObj);

这回复我未定义。答案应该是这样的:

[{"name":kanye},{"name":west}]

但是如何使用angularJS或jquery / js从多个对象访问特定属性?

2 个答案:

答案 0 :(得分:3)

这应该可以解决问题:

$scope.infoObj = $scope.info.map(function(obj){ 
  var x = {}; 
  x['name'] = obj['name']; 
  return x;
})

对于ES6,它可以简化为:

$scope.infoObj = $scope.info.map(x => ({name:x['name']}))

答案 1 :(得分:0)

您实际上可以进行一些重构,以使您的代码更清晰,更易读。不要将info值设置两次,而是将其设置一次,然后在每行中添加对象。

像这样:

$scope.info = [];
$scope.info.push({
  "name":"kanye",
  "size":"",
  "folder":"Folder"
});
$scope.info.push({
  "name":"west",
  "size":"",
  "folder":"Folder"
});

看看它有多干净?现在,info是一个 Array 对象应该是相当明显的,因此执行$scope.info.name将不起作用。我建议创建一个查找函数,它可以帮助您根据提供的密钥获取列表。

这样的事情:

function lookup(key) {
  var result = [];
  for (var i = 0; i < $scope.info.length; i++) {
    var object = {};
    object[key] = $scope.info[i][key];
    result.push(object);
  }
  return result;
}

然后像这样称呼它:

$scope.infoObj = lookup('name');
console.log($scope.infoObj);