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; });