【问题标题】:How to get a value from specificed key如何从指定的键中获取值
【发布时间】:2014-11-13 11:51:32
【问题描述】:
var keys = ['name','age','gender'];

var input = {"document":
             {"people":[
                {"name":["Harry Potter"],"age":["18"],"gender":["Male"]},
                {"name":["hermione granger"],"age":["18"],"gender":["Female"]},
             ]}
            }

如何从特定键获取值。示例{Harry Potter, 18, Male}?

【问题讨论】:

  • 这与 JSON 无关,这些是常规的 javascript 数组/对象。但是input.document.people[0].name 会给你"Harry Potter"
  • 使用 lo-dash, _.pluck(input.document.people, 'name')

标签: javascript node.js underscore.js lodash


【解决方案1】:

您可以使用 pick 来提取您感兴趣的属性:

var people = _.map(input.document.people, function(person){
    return _.flatten( _.values(_.pick(person, keys)));
});

angular.module('MyModule', [])

.controller('MyController', function($scope) {

  var keys = ['name','age','gender'];

  var input = {"document":
             {"people":[
                {"name":["Harry Potter"],"age":["18"],"gender":["Male"]},
                {"name":["hermione granger"],"age":["18"],"gender":["Female"]}
             ]}
            };
               
  var people = _.map(input.document.people, function(person){
    return _.flatten( _.values(_.pick(person, keys)));
  });
  
  $scope.people = people;
});
<script src="http://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.7.0/underscore-min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>

<div ng-app='MyModule' ng-controller='MyController'>
  <p ng-repeat='person in people'>{{person | json}}</p>
</div>

【讨论】:

    【解决方案2】:

    遍历 input.document.people 并将键数组中的键用作

    for(x in input.document.people){
      for(y in keys){
         console.log(input.document.people[x][keys[y]])
      }
    }
    

    同样请refer to fiddle

    【讨论】:

    • 请建议使用什么?
    • forforEach 用于交互数组,for...in 用于对象。
    • 有什么特别的理由不使用对象或数组吗?
    猜你喜欢
    • 2016-02-19
    • 1970-01-01
    • 2023-03-26
    • 2021-03-12
    • 2021-07-22
    • 2023-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多