Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何循环一个对象并获得特定的值来推动每个数组_Javascript_Arrays_Object - Fatal编程技术网

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)