返回对象javascript的数组

时间:2016-03-03 04:57:29

标签: javascript arrays object methods

使用此数组:

var booksStudents = [
  {
   name: "David", 
   books: {
      "fantasy": 23,
      "action": 31,
      "thriller" 21,
      }
   },
   name: "Paul", 
   books: {
      "fantasy": 17,
      "action": 13,
      "thriller" 23,
      }
   },
   name: "Zoe", 
   books: {
      "fantasy": 5,
      "action": 7,
      "thriller" 28,
      }
}];

我想返回一个对象数组,每个对象包含一个人的名字和所有各自书籍的总和。 我知道如何在一个简单的数组上使用reduce方法,但我坚持使用这个对象数组。 我在考虑使用.map.reduce,但我找不到有趣的东西。

2 个答案:

答案 0 :(得分:0)

booksStudents = booksStudents.map(function(item){
  var count = 0;
  for(var key in item.books){
    count+=item.books[key];
  }
  item.count = count;
  return item;
})

使用map和for..in计算数字。

答案 1 :(得分:0)

首先,你的对象数组中几乎没有错误,让我指出它们。

  var booksStudents = [
  {
   name: "David", 
   books: {
      "fantasy": 23,
      "action": 31,
      "thriller": 21,  // : missing
      }
   },
   {                   // { missing
   name: "Paul", 
   books: {
      "fantasy": 17,
      "action": 13,
      "thriller": 23, // : missing
      }
   },
   {                  // { missing
   name: "Zoe", 
   books: {
      "fantasy": 5,
      "action": 7,
      "thriller": 28, // : missing
      }
}];

所以现在解决这个问题后,使用此代码来获得最终结果的解决方案。

var newArray = [];
$.each(booksStudents,function(index,value){
    var currObj = {};
    currObj.name= this.name;
    currObj.totalBooks = parseInt(this.books.fantasy) +parseInt(this.books.action)+parseInt(this.books.thriller) ;
   newArray.push(currObj);
});

console.log(newArray);

这是一个Wroking Fiddle检查控制台,用于输出

输出如下。

enter image description here