试图创建字符串数组以用于删除对象属性的析构函数,只有单个字符串值有效



我有一个对象数组作为数据响应的一部分,我通过每个对象的groupName键使用lodash的groupBy将其分组在一起。

返回的一些项的groupName值为null、未定义或空字符串,lodash为每个值创建单独的组。

我将所有的伪组组合成单个组名";未分类的";并且尝试移除原始伪组以仅返回"伪";未分类的";以及所有其他真理团体。

我遇到的问题是,我试图使用rest运算符来删除具有未定义、null和空字符串键的原始falsy对象,方法是将它们分配给像let groupKeysToRemove = ['undefined', 'null', '']这样的变量,然后尝试像let { [groupKeysToRemove]: removed, ...groups } = initialGroups;那样删除它们,但它返回的是相同的Object,没有删除任何内容。我不确定我的语法是不是错了,但我被难住了。

通过沙盒的代码:

const resources = [
{
groupName: undefined,
name: "color organizer"
},
{
groupName: null,
name: "Bart_Simpson_200px"
},
{
groupName: "Spread Sheets",
name: "Backflow"
},
{
groupName: "Spread Sheets",
name: "220px-Marge_Simpson"
},
{
groupName: "",
name: "212px-Homer_Simpson_2006"
},
{
groupName: "Spread Sheets",
name: "Product 6"
},
{
groupName: "Warranties",
name: "Warranty Bart Simpson"
},
{
groupName: "Warranties",
name: "Warranty Product 2"
},
{
groupName: "Warranties",
name: "Warranty Product 3"
}
];
let initialGroups = groupBy(resources, "groupName");
let uncategorizedGroups = [];
uncategorizedGroups.push(...initialGroups[undefined], ...initialGroups[null], ...initialGroups[""]);
const renameGroups = uncategorizedGroups.map((object) => {
object.groupName = "Uncategorized";
return object;
});
const renamedGroups = groupBy(renameGroups, "groupName");
console.log('RENAMED GROUPS: ', renamedGroups)
const groupKeysToRemove = "undefined"
let { [groupKeysToRemove]: removed, ...groups } = initialGroups;
groups = { ...groups, ...renamedGroups };

将破坏操作的括号语法[]视为对象属性的索引,而不是传入的数组。这类似于调用例如obj["a"]obj.a来访问obj上的a字段。

因此,知道这一点后,您需要传入3个参数来提取要删除的值。对于null和undefined,我必须将它们放在单独的变量中,当将它们直接放在括号中时,这是不起作用的:

const nullKey = null;
const undefinedKey = undefined;
let { 
[nullKey]: nullGroup,
[undefinedKey]: undefinedGroup,
[""]: emptyStringGroup, 
...groups } = initialGroups;
groups = { ...groups, ...renamedGroups };
console.log("initialGroups: ", initialGroups);
console.log("GROUPS: ", groups);
console.log("null group", nullGroup)
console.log("undef group", undefinedGroup)
console.log("emptyStringGroup group", emptyStringGroup)

最新更新