【问题标题】:How to access specific properties in a multiple objects using JS如何使用 JS 访问多个对象中的特定属性
【发布时间】:2016-04-21 03:00:32
【问题描述】:

这是我的对象:

$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 从多个对象中访问特定属性呢?

【问题讨论】:

  • 注意[]表示Array,一般用[0]之类的东西访问,所以也许你应该试试$scope.info[0].name
  • 我已经尝试过了,但只显示了 info[0].name 中的值。示例:{"name": kanye}。
  • 控制台应打印kanye,因为这是第一个对象的名称,即数组中[0] 位置的对象。要获得第二个,您可以使用 $scope.info[1].name 等。

标签: javascript arrays angularjs object properties


【解决方案1】:

这应该可以解决问题:

$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']}))

【讨论】:

  • $scope.info.map(obj=>({name: obj.name});
【解决方案2】:

您实际上可以进行一些重构,以使您的代码更简洁、更具可读性。不要将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);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-09
    • 1970-01-01
    • 1970-01-01
    • 2020-04-13
    • 1970-01-01
    • 2019-06-01
    • 1970-01-01
    相关资源
    最近更新 更多