gpt4 book ai didi

javascript - 在 native JS 中使用 .map 保留对象键

转载 作者:行者123 更新时间:2023-11-30 07:19:41 27 4
gpt4 key购买 nike

我想在使用 JavaScript 的 map 函数减少 CSV 数据集时保留对象键(如果这实际上是正确的方法?)

我已阅读 a top SO thread on preserving keys ,但给出的解决方案需要外部 JS 库(下划线或 lodash)。如果可能的话,我宁愿避免使用“vanila”JS 以外的任何东西。

例如:

var basket = [{fruit: "apple", veg: "carrot", nut: "peanut"},
{fruit: "pear", veg: "lettuce", nut: "pistachio"},
{fruit: "banana", veg: "radish", nut: "pecan"},
{fruit: "kiwi", veg: "kale", nut: "almond"}]

产生一个包含 3 个对象的数组,对应于上面的每个“食物类型”条目(水果、蔬菜、坚果)。

我不想要坚果,所以我尝试使用 map 将它们过滤掉:

var small_basket = basket.map(function(item){
return [
item.fruit,
item.veg
]
});

此方法返回一个包含 4 个数组的数组,对应于我列表中每种食物类型的每个项目,例如4 种水果和 4 种坚果(因此我们有效地消除了坚果)。

我的麻烦是:现在我的对象键不见了!相反,我的数组现在看起来像这样:

small_basket = Array(3) [
0: Array(2) [
0: "apple"
1: "carrot"
]
1: Array(2) [
0: "pear"
1: "lettuce"
]
2: Array(2) [
0: "bananna"
1: "raddish"
]
]

我可以采取哪些不同的方式来保留对象键?

最佳答案

只返回另一个对象:

return {
fruit: item.fruit,
veg: item.veg
}

可以简写为:

 array.map(({ fruit, veg }) => ({ fruit, veg }))

或者如果您不想重复标识符:

 const pick = (key, ...rest) => obj => key ? ({ [key]: obj[key], ...pick(...rest)(obj) }): {};
array.map(pick("fruit", "veg"))

或者将提取转化为移除:

 array.map(({ nut, ...rest }) => rest)

关于javascript - 在 native JS 中使用 .map 保留对象键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55534284/

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