json 如何从对象中提取特定内容

0yg35tkg  于 2023-06-25  发布在  其他
关注(0)|答案(3)|浏览(159)

如何从数组中删除属性?我希望删除包含以下内容的属性:

someObject = { number: '1', month: 'march', year: '2023' }

我有一个数组:

someArray = ['month', 'year'] or a string 'month, year'

并想提取这样我就得到:

finalObject = {  month: 'march', year: '2023' }
cwdobuhd

cwdobuhd1#

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' }
6fe3ivhb

6fe3ivhb2#

我们可以编写一个函数,将键Map到[key, value]子数组中,使用初始对象提取值,然后使用Object.fromEntries将这些值组合成一个新对象:

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]]] : []
))
r1wp621o

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中,则可以添加额外的检查来处理此类情况。

相关问题