[英]using Object.keys for arrays of object
我使用Object.keys对我的对象数组进行一些键分配。 但是它每次迭代都返回唯一的对象,所以我的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));
添加检查对象是否已初始化:
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;
});
您可以在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.