我想创建一个像这样的对象:

"store1":
{
  "isbn":"3129321903",
  "title":"here comes the title",
  "author":"author of the book"
},
{
 "isbn":"3333333333",
 "title":"title of second book",
 "author":"author of second book"
}
"store2":
{
  "isbn":"3333311111",
  "title":"title of book from store2",
  "author":"author of book from store2"
}


我尝试过这样的事情:

var storeArray = [];
for(var i = 0; i < response.data.bookInfo.length; i++){
  var keys = Object.keys(response.data.bookInfo[i]);
  var storename = keys.filter(key => key != 'isbn' && key != 'metadata'); // get storename

  if(storeArray[storename] == undefined){
    storeArray[storename] = response.data.bookInfo[i];
  }
  else{
    storeArray[storename].push(response.data.bookInfo[i]);
  }
}


但这只会给我以下错误:


  TypeError:storeArray [“ amazon”]。push不是函数


当我使用storeArray[storename] = response.data.bookInfo[i]时,它在控制台中仅显示一行,我想将响应数据添加到storeArray [storename]以按商店获取书籍列表。

最佳答案

这意味着您的storeArray[storename]不是数组。


storeArray[storename] = response.data.bookInfo[i];


您只需为storeArray[storename]分配一个不是数组的值。您首先需要创建一个数组,然后将该元素放入其中。

storeArray[storename] = [ response.data.bookInfo[i] ];


在下一次迭代中,您将获得一个包含一个元素的数组,并且可以在其上使用push

09-11 19:32