【发布时间】:2022-01-22 20:24:36
【问题描述】:
我有一个简单的数组,我想用值 order:"asc" 更新这个数组,并且仅当 type == "user" 和 key == "country" 时才想删除所有其他 order 键
const items = [
{
type: "user",
values: [
{order:"asc", key:"first_name"},
{key:"last_name"},
{key:"address"},
{key:"country"},
]
},
]
我的预期结果是
const items = [
{
type: "user",
values: [
{key:"first_name"},
{key:"last_name"},
{key:"address"},
{order:"asc", key:"country"},
]
},
]
我可以在map 中使用map 来做到这一点。是否可以不循环两次?
items.map(
x => { if (x.type == "user") {
x.values = x.values.map(y => {
if (y.key.includes("country")) {
y.order = "asc"
} else if (JSON.stringify(x.values).includes("country")) {
delete y.order
}
return y
})
}
return [x]
});
【问题讨论】:
-
您的问题中唯一实际的JSON 是
JSON.stringify(x.values)的结果-并且该调用不是必需的,只是增加了不良行为的潜在来源。 -
我认为没有双循环是不可能做到这一点的。因为你有两个独立的数组。每个数组都必须有一个循环。 Map、filter、foreEach 都有一个循环。
标签: javascript arrays json