简体   繁体   English

将Object.keys用于对象数组

[英]using Object.keys for arrays of object

I use Object.keys to do some key assignation to my arrays of object. 我使用Object.keys对我的对象数组进行一些键分配。 But it returned unique object for each iteration, so my 4 items became 2. Any way to avoid that? 但是它每次迭代都返回唯一的对象,所以我的4项变成了2。有什么办法可以避免这种情况?

 var cityIdmap = {}; var bpidmap = { '7': { cityid: 2, bpid: 7, name: 'Puduraya', time: '+00:00', sbpid: 50169 }, '11': { cityid: 1, bpid: 11, name: 'Golden Mile Tower', time: '+00:00', sbpid: 50172 }, '12': { cityid: 2, bpid: 12, name: 'Berjaya Times Square', time: '+00:00', sbpid: 50171 }, '66': { cityid: 1, bpid: 66, name: 'Textile Centre', time: '+00:00', sbpid: 50170 } }; Object.keys(bpidmap).forEach(function(item) { var bp = bpidmap[item]; cityIdmap[bp.cityid] = {}; cityIdmap[bp.cityid][bp.bpid] = bp; }); document.write(JSON.stringify(cityIdmap)); 

Add check that the object has already been initialized: 添加检查对象是否已初始化:

Object.keys(bpidmap).forEach(function(item) {
  var bp = bpidmap[item];
  if (typeof cityIdmap[bp.cityid] === 'undefined') cityIdmap[bp.cityid] = {};
  cityIdmap[bp.cityid][bp.bpid] = bp;
});

You can use array in cityIdmap[bp.cityid] instead object 您可以在cityIdmap[bp.cityid]使用array代替object

var cityIdmap = {};
var bpidmap = {
  '7': {
    cityid: 2,
    bpid: 7,
    name: 'Puduraya',
    time: '+00:00',
    sbpid: 50169
  },
  '11': {
    cityid: 1,
    bpid: 11,
    name: 'Golden Mile Tower',
    time: '+00:00',
    sbpid: 50172
  },
  '12': {
    cityid: 2,
    bpid: 12,
    name: 'Berjaya Times Square',
    time: '+00:00',
    sbpid: 50171
  },
  '66': {
    cityid: 1,
    bpid: 66,
    name: 'Textile Centre',
    time: '+00:00',
    sbpid: 50170
  }
};

Object.keys(bpidmap).forEach(function(item) {
  var bp = bpidmap[item];
  cityIdmap[bp.cityid] = cityIdmap[bp.cityid] || []; //use array instead of object
  var temp = {};
  temp[bp.bpid] = bp;
  cityIdmap[bp.cityid].push(temp);
});

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM