透视或转换JavaScript对象
我有以下JavaScript对象。我需要从给定对象生成一个新对象。在JavaScript中我应该采取什么方法透视或转换JavaScript对象,javascript,json,Javascript,Json,我有以下JavaScript对象。我需要从给定对象生成一个新对象。在JavaScript中我应该采取什么方法 [ {"name": "Dan", "city" : "Columbus", "ZIP":"47201"}, {"name": "Jen", "city" : "Columbus", "ZIP":"47201"}, {"name": "Mark", "city" : "Tampa", "ZIP":"33602"}, ] 如何变换或旋转以生成以下对象 [ { "47201"
[
{"name": "Dan", "city" : "Columbus", "ZIP":"47201"},
{"name": "Jen", "city" : "Columbus", "ZIP":"47201"},
{"name": "Mark", "city" : "Tampa", "ZIP":"33602"},
]
如何变换或旋转以生成以下对象
[
{ "47201": [
{"name": "Dan", "city": "Columbus"},
{"name": "Jen", "city": "Columbus"},
],
"count": "2"
},
{ "33602": [
{"name": "Mark", "city": "Tampa"}
],
"count": "1"
}
]
我不知道您为什么需要.count属性,因为它可以通过数组的.length属性访问,但无论如何: 常量输入=[ {姓名:丹,城市:哥伦布,邮编:47201}, {姓名:Jen,城市:哥伦布,邮编:47201}, {姓名:马克,城市:坦帕,邮编:33602}, ] const working=input.reduceac,{ZIP,name,city}=>{ acc[ZIP]| | acc[ZIP]=[]按{name,city} 返回acc }, {} 常量输出=Object.keysworking .mapk=>{[k]:工作[k],计数:工作[k].length}
console.logoutput下面的代码将满足您的要求。最终结果存储在保存数组对象的变量result中
var source = [{
"name": "Dan",
"city": "Columbus",
"ZIP": "47201"
},
{
"name": "Mark",
"city": "Tampa",
"ZIP": "33602"
},
{
"name": "Jen",
"city": "Columbus",
"ZIP": "47201"
}
];
var result = [];
finalarr('ZIP');
function finalarr(propname) {
var obj = JSON.parse(JSON.stringify(source));
obj.forEach(function(elm,i) {
var arr = {};var chli=[];var charr={};
var flag = 0;
for (var prop in elm) {
if(prop != propname){
charr[prop]=elm[prop];
}
}
for(var i=0;i<result.length;i++){
if(result[i][elm[propname]]){
result[0][elm[propname]].push(charr);
//console.log(result[i][propname]);
flag = 1;
}
}
if(flag == 0){
chli.push(charr);
arr["count"] = checkarr(obj,propname,elm[propname]);
arr[elm[propname]]=chli;
result.push(arr);
}
});
}
function checkarr(obj,propname,value){
var count = 0;
obj.forEach(function(elm,i) {
if(elm[propname] == value){
count++;
}
});
return count;
}
console.log(result);
乍一看,预期的产出没有多大意义。如果将其简化为一个对象,以邮政编码作为键,以名称/城市对象数组作为值,则更符合逻辑。count属性可以很容易地从数组长度中派生。搜索javascript group by.Thank。它起作用了。谢谢你提供的关于进一步阅读的提示。