我想创建一个像这样的对象:
"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
。