我想创建一个这样的对象:
"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"
}
Run Code Online (Sandbox Code Playgroud)
我试过这样的事情:
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]);
}
}
Run Code Online (Sandbox Code Playgroud)
但这只会让我出现以下错误:
类型错误:storeArray["amazon"].push 不是函数
当我使用时storeArray[storename] = response.data.bookInfo[i],它只在控制台中显示一行,我想将响应数据添加到 storeArray[storename] 以按商店获取书籍列表。
这意味着您storeArray[storename]的不是数组。在
storeArray[storename] = response.data.bookInfo[i];
Run Code Online (Sandbox Code Playgroud)
您只需storeArray[storename]为不是数组的分配一个值。您首先需要创建一个数组,然后将该元素放入其中。
storeArray[storename] = [ response.data.bookInfo[i] ];
Run Code Online (Sandbox Code Playgroud)
并且在下一次迭代中,您将拥有一个包含一个元素的数组,并且可以push在其上使用。