首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >过滤对象数组中的对象键

过滤对象数组中的对象键
EN

Stack Overflow用户
提问于 2020-07-30 00:21:23
回答 5查看 116关注 0票数 1

假设我正在从Node Repository获取一个对象数组,例如:

代码语言:javascript
运行
复制
results = [
    {
        name: "John",
        surname: "Fool",
        age: 22
    },
    {
        name: "Erik",
        surname: "Owl",
        age: 38
    }
]

我如何过滤每个对象,只取我需要的键,例如避免'age‘键?

代码语言:javascript
运行
复制
filteredResults = [
    {
        name: "John",
        surname: "Fool",
    },
    {
        name: "Erik",
        surname: "Owl",
    }
]

我已经通过创建另一个空数组并通过在原始数组上循环来填充它来获得它,但如果是大数据,这将是繁重的。

代码语言:javascript
运行
复制
repository.retrieve((error, result) => {
  let filteredData = [];
  result.forEach(r => {
    filteredData.push({
      name: r.name,
      description: r.description,
    });
  });
});

在SQL中,我将通过以下方式获取它:

代码语言:javascript
运行
复制
SELECT `name, description` FROM results;
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2020-07-30 00:57:26

看一下Array.map.It创建了转换后的数组。

代码语言:javascript
运行
复制
let arr = [
    {
        name: "John",
        surname: "Fool",
        age: 22
    },
    {
        name: "Erik",
        surname: "Owl",
        age: 38
    }
]

let result = arr.map((elem) => {
  return {
    name: elem.name,
    surname: elem.surname
  }
});

console.log(result);

票数 1
EN

Stack Overflow用户

发布于 2020-07-30 00:24:11

您可以根据需要重新构建对象

代码语言:javascript
运行
复制
  { 
    name: rec.name,
    surname: rec.surname
  }

代码语言:javascript
运行
复制
const results = [
    {
        name: "John",
        surname: "Fool",
        age: 22
    },
    {
        name: "Erik",
        surname: "Owl",
        age: 38
    }
]

const result = results.map((rec) => {
  return { 
    name: rec.name,
    surname: rec.surname
  }
})


console.log(result)

或无用的delete字段

代码语言:javascript
运行
复制
const results = [
    {
        name: "John",
        surname: "Fool",
        age: 22
    },
    {
        name: "Erik",
        surname: "Owl",
        age: 38
    }
]

const result = results.map((rec) => {
  delete rec.age
  return rec
})


console.log(result)

票数 3
EN

Stack Overflow用户

发布于 2020-07-30 00:28:04

您可以使用mapreduce来简化这一过程,这样就不需要创建新的数组了。

代码语言:javascript
运行
复制
var results = [ { name: "John", surname: "Fool", age: 22 }, { name: "Erik", surname: "Owl", age: 38 } ];
let keys = ['name', 'surname'];
var filtered = results.map(obj=>
   keys.reduce((acc,curr)=>(acc[curr]=obj[curr],acc), {}));
console.log(filtered);

您也可以使用对象解构。

代码语言:javascript
运行
复制
var results = [ { name: "John", surname: "Fool", age: 22 }, { name: "Erik", surname: "Owl", age: 38 } ];
var filtered = results.map(({name,surname})=>({name,surname}));
console.log(filtered);

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63158094

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档