Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/455.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_Javascript Objects - Fatal编程技术网

Javascript 如何迭代数组中的对象?

Javascript 如何迭代数组中的对象?,javascript,arrays,javascript-objects,Javascript,Arrays,Javascript Objects,我有一个数组对象,如下所述 var myArray=[{dateformat:"apr1", score:1},{dateformat:"apr2",score:2},{dateformat:"apr3",score:3}]; 我想将dateformat的值提取到一个单独的数组中,例如: var dateArray=["apr1","apr2","apr3"]; var score=[1,2,3]; 我正在使用for循环提取索引,但无法获取值。如果您不想硬编码变量,可以使用数组#forEac

我有一个数组对象,如下所述

var myArray=[{dateformat:"apr1", score:1},{dateformat:"apr2",score:2},{dateformat:"apr3",score:3}];
我想将dateformat的值提取到一个单独的数组中,例如:

var dateArray=["apr1","apr2","apr3"];
var score=[1,2,3];

我正在使用
for
循环提取索引,但无法获取值。

如果您不想硬编码变量,可以使用
数组#forEach
Object.keys
在数组中存储每个唯一的键值

注意:对象中有多少键并不重要,以下解决方案将始终返回正确的输出。请注意,您甚至不必首先声明新变量

var myArray=[{dateformat:“apr1”,分数:1},{dateformat:“apr2”,分数:2},{dateformat:“apr3”,分数:3}],
obj={};
myArray.forEach(v=>Object.keys(v).forEach(函数(c){
(obj[c]| |(obj[c]=[])).push(v[c]);
}));

控制台日志(obj)创建空数组,将forEach与'element'参数一起使用(表示数组中的每个对象),并将每个对象的属性的esch推送到所需数组中

var-dateArray=[];
var得分=[];
变量myArray=[
{日期格式:“apr1”,分数:1},
{日期格式:“apr2”,分数:2},
{日期格式:“apr3”,分数:3}
];
myArray.forEach(函数(元素){
dateArray.push(element.dateformat);
得分。推(元素。得分);
});
log(日期数组)//给出[“apr1”、“apr2”、“apr3”]

控制台日志(score)//给出[“1”、“2”、“3”]
以下是简单循环的答案

 var dateArray = new Array(myArray.length);
 for(var i = 0; i < myArray.length; ++i) {
      var value = myArray[i];
      var dateValue = value.dateformat;
      dateArray[i] = dateValue;
 }

使用
map
迭代初始数组对象并返回所需的项

var myArray=[{dateformat:“apr1”,分数:1},{dateformat:“apr2”,分数:2},{dateformat:“apr3”,分数:3}];
var dateArray=myArray.map(函数(obj){return obj.dateformat;}),
score=myArray.map(函数(obj){return obj.score});
log(日期数组);

控制台日志(score)您可以使用给定数组的单循环方法,迭代键并将值推送到所需的数组

var myArray=[{dateformat:“apr1”,分数:1},{dateformat:“apr2”,分数:2},{dateformat:“apr3”,分数:3}],
dateArray=[],
分数=[];
forEach(函数(目标、键){
返回函数(a){
键。forEach(函数(k,i){
目标[i]。推(a[k]);
});
};
}([dateArray,score],'dateformat','score']);
log(日期数组);

控制台日志(score)为什么使用
减少
?步长函数接受累加器
r
,并返回它,即所有步长使用相同的累加器(它是循环中的一个常量)。为什么不改用
forEach
“但我无法获取值”。。。给我们看看代码。Stackoverflow不是一个免费的代码编写服务,其目的是帮助您修复未按预期执行的代码
 var dateArray = myArray.map(function(value) { return value.dateformat; });