如何从数组中删除属性?我希望删除包含以下内容的属性:
someObject = { number: '1', month: 'march', year: '2023' }
我有一个数组:
someArray = ['month', 'year'] or a string 'month, year'
并想提取这样我就得到:
finalObject = { month: 'march', year: '2023' }
cwdobuhd1#
在filter的帮助下,使用Object.entries循环keys and values,只允许propertiesToExtract中存在的键,并使用Object.fromEntries将它们转换回对象
filter
Object.entries
keys and values
propertiesToExtract
Object.fromEntries
const someObject = { number: '1', month: 'march', year: '2023' } const propertiesToExtract = ['month', 'year']; //if it is string 'month, year' turn it into array with the help of .split(', '); const finalObject = Object.fromEntries(Object.entries(someObject).filter(([key,value])=>propertiesToExtract.includes(key))); console.log(finalObject); // { month: 'march', year: '2023' }
6fe3ivhb2#
我们可以编写一个函数,将键Map到[key, value]子数组中,使用初始对象提取值,然后使用Object.fromEntries将这些值组合成一个新对象:
[key, value]
const extract = (object, keys) => Object.fromEntries(keys.map(key => [key, object[key]])) const someObject = { number: '1', month: 'march', year: '2023' } const someArray = ['month', 'year'] console.log(extract(someObject, someArray))
一种注解,要求只包含那些其值实际出现在原始对象中的键。这只是一个小调整:
const extract = (object, keys) => Object.fromEntries(keys.flatMap(key => key in object ? [[key, object[key]]] : [] ))
r1wp621o3#
要根据特定属性从数组中移除对象,可以将filter()方法与includes()方法一起使用。以下是您如何实现预期结果的方法:
const someObject = { number: '1', month: 'march', year: '2023' }; const someArray = ['month', 'year']; // or const someArray = 'month, year'; // Convert the someArray string to an array if needed const propertiesToRemove = Array.isArray(someArray) ? someArray : someArray.split(', '); // Filter the properties of someObject based on propertiesToRemove const finalObject = Object.keys(someObject) .filter(key => propertiesToRemove.includes(key)) .reduce((obj, key) => { obj[key] = someObject[key]; return obj; }, {}); console.log(finalObject);
在这段代码中,我们首先定义提供的someObject和someArray变量。然后,如果someArray字符串是字符串格式,我们将其转换为数组。接下来,我们使用Object.keys()从someObject获取一个键数组。我们使用includes()方法根据propertiesToRemove中的属性是否存在来过滤这个数组。然后,使用reduce(),我们创建一个新的对象finalObject,方法是迭代过滤的键,并将someObject中的相应值赋给finalObject。最后,我们将finalObject记录到控制台,它将只包含someArray或someArray字符串中指定的属性。注意:代码假设要删除的属性存在于someObject中。如果某些属性可能不存在于someObject中,则可以添加额外的检查来处理此类情况。
3条答案
按热度按时间cwdobuhd1#
在
filter
的帮助下,使用Object.entries
循环keys and values
,只允许propertiesToExtract
中存在的键,并使用Object.fromEntries
将它们转换回对象6fe3ivhb2#
我们可以编写一个函数,将键Map到
[key, value]
子数组中,使用初始对象提取值,然后使用Object.fromEntries
将这些值组合成一个新对象:更新
一种注解,要求只包含那些其值实际出现在原始对象中的键。这只是一个小调整:
r1wp621o3#
要根据特定属性从数组中移除对象,可以将filter()方法与includes()方法一起使用。以下是您如何实现预期结果的方法:
在这段代码中,我们首先定义提供的someObject和someArray变量。然后,如果someArray字符串是字符串格式,我们将其转换为数组。
接下来,我们使用Object.keys()从someObject获取一个键数组。我们使用includes()方法根据propertiesToRemove中的属性是否存在来过滤这个数组。然后,使用reduce(),我们创建一个新的对象finalObject,方法是迭代过滤的键,并将someObject中的相应值赋给finalObject。
最后,我们将finalObject记录到控制台,它将只包含someArray或someArray字符串中指定的属性。
注意:代码假设要删除的属性存在于someObject中。如果某些属性可能不存在于someObject中,则可以添加额外的检查来处理此类情况。