如何迭代数组中的对象?

时间:2017-04-08 20:51:05

标签: 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循环来提取索引,但我无法获取值。

5 个答案:

答案 0 :(得分:1)

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



var myArray=[{dateformat:"apr1", score:1},{dateformat:"apr2",score:2},{dateformat:"apr3",score:3}];

var dateArray = myArray.map(function(obj){return obj.dateformat;}),
    score = myArray.map(function(obj){return obj.score});
    
console.log(dateArray);
console.log(score);




答案 1 :(得分:0)

如果您不想对变量进行硬编码,则可以使用Array#forEachObject.keys将每个唯一键值存储在内部,例如:阵列。

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

var myArray = [{dateformat:"apr1", score:1},{dateformat:"apr2",score:2},{dateformat:"apr3",score:3}],
    obj = {};
    
    myArray.forEach(v => Object.keys(v).forEach(function(c) {
      (obj[c] || (obj[c] = [])).push(v[c]);
    }));
    
    console.log(obj);

答案 2 :(得分:0)

创建空数组,并使用带有'element'参数的forEach(表示数组中的每个对象),并将每个对象属性的esch推入所需的数组。

 var dateArray=[]; 
 var score=[];
 
 var myArray=[
   {dateformat:"apr1", score:1},
   {dateformat:"apr2",score:2},
   {dateformat:"apr3",score:3}
 ];
 

myArray.forEach(function(element) {
  dateArray.push(element.dateformat);
  score.push(element.score);
});

console.log(dateArray); //gives ["apr1","apr2","apr3"]
console.log(score); //gives ["1","2","3"]

答案 3 :(得分:0)

这里的答案是一个简单的循环。

 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 dateArray = myArray.map(function(value) { return value.dateformat; });

答案 4 :(得分:0)

您可以使用给定数组的单循环方法并迭代键并将值推送到所需的数组。

 class interestPTableViewController: BaseViewController, UITableViewDataSource, UITableViewDelegate, IPSearch {

        var ipSearchDelegate: IPSearch?

        public func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {       
                ipSearchDelegate?.ipZoom()
        }
}