gpt4 book ai didi

javascript - 如何使用纯 JavaScript 访问最内层的双重嵌套数组/对象?

转载 作者:行者123 更新时间:2023-11-28 15:13:41 27 4
gpt4 key购买 nike

我怀疑答案很简单,但我搜索过这个网站和其他网站,但没有找到。我有一个双重嵌套的数据结构,无法弄清楚如何迭代最内层。我猜测它可能涉及 forEach() 或 map() 方法,但我尝试过的方法都不起作用。

背景:我已经简化了这个问题的数据。数据(粘贴在下面)存储在包含 2 个零售商店对象的数组中。每个商店对象都有一个 visits 属性,其值是访问对象的数组。每次访问(对象)均由访问日期标识(假设在日期 B 最多可以有 1 次访问商店 A)。每个访问对象都包含一个 values 属性,其值是访问时进行的交易(购买或返回)的数组。在实际的完整数据中,每个商店每个日期的交易数量变化很大。

我需要帮助的任务:(a) 将属性 key 重命名为 visitDate,(b) 将属性 values 重命名为 transactions,(c) 删除 8 个冗余属性(从 storeIDstoreVisitDate),但保留 actiondollarAmount 属性,和(d) 将属性 dollarAmount 重命名为 dollars

任何帮助将不胜感激。谢谢。

 [
{
"storeName": "Ye Olde Candy Shoppe",
"address": "1313 Vampire Lane, Cityville NY 99999",
"zipCode": "99999",
"storeSize": "large",
"visits": [
{
"key": "5/3/12",
"values": [
{
"storeID": "53454447",
"storeName": "Ye Olde Candy Shoppe",
"city": "Cityville",
"building": "1313",
"street": "Vampire Lane",
"zipcode": "99999",
"storeSize": "large",
"storeVisitDate": "5/3/12",
"action": "Return",
"dollarAmount": "65.43"
},
{
"storeID": "53454447",
"storeName": "Ye Olde Candy Shoppe",
"city": "Cityville",
"building": "1313",
"street": "Vampire Lane",
"zipcode": "99999",
"storeSize": "large",
"storeVisitDate": "5/3/12",
"action": "Purchase",
"dollarAmount": "12.43"
},
{
"storeID": "53454447",
"storeName": "Ye Olde Candy Shoppe",
"city": "Cityville",
"building": "1313",
"street": "Vampire Lane",
"zipcode": "99999",
"storeSize": "large",
"storeVisitDate": "5/3/12",
"action": "Purchase",
"dollarAmount": "5.43"
}
]
},
{
"key": "12/31/12",
"values": [
{
"storeID": "53454447",
"storeName": "Ye Olde Candy Shoppe",
"city": "Cityville",
"building": "1313",
"street": "Vampire Lane",
"zipcode": "99999",
"storeSize": "large",
"storeVisitDate": "12/31/12",
"action": "Purchase",
"dollarAmount": "2.53"
}
]
},
{
"key": "1/24/13",
"values": [
{
"storeID": "53454447",
"storeName": "Ye Olde Candy Shoppe",
"city": "Cityville",
"building": "1313",
"street": "Vampire Lane",
"zipcode": "99999",
"storeSize": "large",
"storeVisitDate": "1/24/13",
"action": "Return",
"dollarAmount": "2.53"
},
{
"storeID": "53454447",
"storeName": "Ye Olde Candy Shoppe",
"city": "Cityville",
"building": "1313",
"street": "Vampire Lane",
"zipcode": "99999",
"storeSize": "large",
"storeVisitDate": "1/24/13",
"action": "Return",
"dollarAmount": "64.22"
}
]
}
]
},
{
"storeName": "Mike's Bikes",
"address": "2626 Aardvark Circle, Townsville NY 88888",
"zipCode": "88888",
"storeSize": "small",
"visits": [
{
"key": "8/8/14",
"values": [
{
"storeID": "24335234",
"storeName": "Mike's Bikes",
"city": "Townsville",
"building": "2626",
"street": "Aardvark Circle",
"zipcode": "88888",
"storeSize": "small",
"storeVisitDate": "8/8/14",
"action": "Purchase",
"dollarAmount": "443.55"
},
{
"storeID": "24335234",
"storeName": "Mike's Bikes",
"city": "Townsville",
"building": "2626",
"street": "Aardvark Circle",
"zipcode": "88888",
"storeSize": "small",
"storeVisitDate": "8/8/14",
"action": "Purchase",
"dollarAmount": "34"
},
{
"storeID": "24335234",
"storeName": "Mike's Bikes",
"city": "Townsville",
"building": "2626",
"street": "Aardvark Circle",
"zipcode": "88888",
"storeSize": "small",
"storeVisitDate": "8/8/14",
"action": "Purchase",
"dollarAmount": "12.32"
}
]
},
{
"key": "10/3/15",
"values": [
{
"storeID": "24335234",
"storeName": "Mike's Bikes",
"city": "Townsville",
"building": "2626",
"street": "Aardvark Circle",
"zipcode": "88888",
"storeSize": "small",
"storeVisitDate": "10/3/15",
"action": "Purchase",
"dollarAmount": "233.1"
},
{
"storeID": "24335234",
"storeName": "Mike's Bikes",
"city": "Townsville",
"building": "2626",
"street": "Aardvark Circle",
"zipcode": "88888",
"storeSize": "small",
"storeVisitDate": "10/3/15",
"action": "Return",
"dollarAmount": "44.99"
}
]
}
]
}
]

最佳答案

你是对的!您可以使用 .map() 完成大部分工作。新的 ES6 标准使这一切变得更加容易,并且使用以下函数,您甚至不需要修改任何原始数据!:

array.map(store => {
//return a new object that takes all the store info, then reassigns the visits key in a new object
return Object.assign({}, store, {
//map over visits, and reassign the key key to visitDate
visits: store.visits.map(({ key: visitDate, values }) => {
return {
//return an obj with visit date
visitDate,
// do destructuring again to create objects of action,dollars
transactions: values.map(({ action, dollarAmount: dollars }) => ({ action, dollars }))
};
})
});
});

关于javascript - 如何使用纯 JavaScript 访问最内层的双重嵌套数组/对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35107171/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com