Javascript 如何循环一个对象并获得特定的值来推动每个数组
我有一些案例来循环一个有多个键的对象,得到特定的值,并将每个键推送到一个数组,我希望这个论坛的任何人都能帮助我,谢谢Javascript 如何循环一个对象并获得特定的值来推动每个数组,javascript,arrays,object,Javascript,Arrays,Object,我有一些案例来循环一个有多个键的对象,得到特定的值,并将每个键推送到一个数组,我希望这个论坛的任何人都能帮助我,谢谢 [{ "total_sms": 887, "total_submitted": 101, "total_in_queue": 696, "total_processed": 0, "total_delivered": 0, "total_failed": 0, "date": "2019-08-06" }, { "total_sms": 888,
[{
"total_sms": 887,
"total_submitted": 101,
"total_in_queue": 696,
"total_processed": 0,
"total_delivered": 0,
"total_failed": 0,
"date": "2019-08-06"
}, {
"total_sms": 888,
"total_submitted": 102,
"total_in_queue": 697,
"total_processed": 0,
"total_delivered": 0,
"total_failed": 0,
"date": "2019-08-06"
}]
期望
total_sms = [887,888]
total_submitted = [101,102]
and etc
您可以使用
数组。减少以按数组中每个对象的键进行分组。每个对象的键都可以从object.keys
中获得
现在,对于对象中的每个键(如果存在),只需将其添加到数组中,否则创建一个新数组并添加该元素:
const数据=[{
“短信总数”:887,
“提交总数”:101,
“队列中的总数”:696,
“处理总数”:0,
“总交付量”:0,
“失败总数”:0,
“日期”:“2019-08-06”
}, {
“短信总数”:888,
“提交总数”:102,
“队列中的总数”:697,
“处理总数”:0,
“总交付量”:0,
“失败总数”:0,
“日期”:“2019-08-06”
}];
常量分组=数据减少((acc,ele)=>{
常量键=对象键(ele);
keys.forEach(key=>acc[key]=acc[key]?acc[key].concat(ele[key]):[ele[key]];
返回acc;
}, {});
控制台日志(分组);
如果您需要单元素数据,则map()
将为您提供帮助
const数组=[{
短信总数:887,
提交总数:101,
_队列中的_总数:696,
处理总数:0,
总交付量:0,
失败总数:0,
日期:“2019-08-06”,
}, {
短信总数:888,
提交总数:102,
_队列中的_总数:697,
处理总数:0,
总交付量:0,
失败总数:0,
日期:“2019-08-06”,
}];
const sms=array.map((m)=>{return m.total_sms;});
控制台日志(sms)代码>试试看
let数据=[{
“短信总数”:887,
“提交总数”:101,
“队列中的总数”:696,
“处理总数”:0,
“总交付量”:0,
“失败总数”:0,
“日期”:“2019-08-06”
}, {
“短信总数”:888,
“提交总数”:102,
“队列中的总数”:697,
“处理总数”:0,
“总交付量”:0,
“失败总数”:0,
“日期”:“2019-08-06”
}];
设r={};
forEach(d=>Object.keys(d).forEach(k=>r[k]=(r[k]| |[]).concat(d[k]);
Object.keys(r.forEach)(k=>this[k]=r[k]);//另存为全局变量
log('total\u sms=',total\u sms');
log('total_submitted=',total_submitted');
console.log(“…”)
让objs=[{
“短信总数”:887,
“提交总数”:101,
“队列中的总数”:696,
“处理总数”:0,
“总交付量”:0,
“失败总数”:0,
“日期”:“2019-08-06”
}, {
“短信总数”:888,
“提交总数”:102,
“队列中的总数”:697,
“处理总数”:0,
“总交付量”:0,
“失败总数”:0,
“日期”:“2019-08-06”
}];
让数组=objs.reduce((数组,obj)=>{
Object.entries(obj.forEach)([key,value])=>{
数组[键]=数组[键]| |[];
数组[key].push(值);
});
返回阵列;
}, {});
console.log(数组)代码>使用数组。减少对具有空数组的对象的凝视,并将用于。。在其内部,从循环中的当前onw填充初始对象:
var-temp=[
{
短信总数:887,
提交总数:101,
_队列中的_总数:696,
处理总数:0,
总交付量:0,
失败总数:0,
日期:“2019-08-06”
},
{
短信总数:888,
提交总数:102,
_队列中的_总数:697,
处理总数:0,
总交付量:0,
失败总数:0,
日期:“2019-08-06”
}
];
常数结果=温度降低(
(全部,当前)=>{
for(让k表示为curr){
所有[k]。推送(curr[k]);
}
全部归还;
},
{
短信总数:[],
提交的总数:[],
_队列中的_总数:[],
处理总数:[],
交付的总金额:【】,
失败的总数:[],
日期:[]
}
);
控制台日志(结果)代码>@Amardepbhowmick不是我的问题。只是想在这个问题被标记为重复并删除之前给你一个快速补充。@bigboshighlight您可以使用Object.values(yourObject)
从外部对象中获取数据元素,并将其转换为问题中给出的数组形式。这不是一种动态方式
data.forEach(d => Object.keys(d).forEach(k=> r[k]=(r[k]||[]).concat(d[k]) ));
var temp = [{
"total_sms": 887,
"total_submitted": 101,
"total_in_queue": 696,
"total_processed": 0,
"total_delivered": 0,
"total_failed": 0,
"date": "2019-08-06"
}, {
"total_sms": 888,
"total_submitted": 102,
"total_in_queue": 697,
"total_processed": 0,
"total_delivered": 0,
"total_failed": 0,
"date": "2019-08-06"
}
]
var obj = {
}
temp.forEach(item => {
Object.keys(item).map(key => {
obj[key] = (obj[key]||[]).concat(item[key])
})
})
console.log(obj)