JavaScript如何将数组属性提取到另一个数组中?

标签 javascript arrays angular object

我需要映射来自服务器的数组,以将其字段更改为另一台服务器可以理解的字段,以便我可以将其上传到第二台服务器。

我的第一个挑战是获取来自第一台服务器的第一个数组的字段名称,将它们显示给用户,编辑它们,然后使用 array.map() 我将创建一个具有用户定义的字段名称的新数组。

我的第一步是获取数组主字段名称。可以说我有以下内容:

array = [{'name': 'John', 'lastname' :'Doe'},{'name': 'Roe', 'lastname' :'Doe'}]

结果会是这样的:

arrayFields = [{name, lastname}]

我尝试使用getOwnPropertyNames():

getProp(){
    console.log(Object.getOwnPropertyNames(this.array))
}

结果是这样的:

["0", "1", "length"]

0: "0"

1: "1"

2: "length"

然后我尝试使用此堆栈中提到的Object.assign() question :

 getObject(){
    let newObject = (Object.assign(this.array))
    console.log(Object.getOwnPropertyNames(newObject))
 }

但是和之前的结果是一样的。

这是stackblitz我正在与.

想要的结果是这样的:["name", "lastname"]

最佳答案

您可以使用Set().flatMap()组合也。通过使用它们,您可以更灵活的方式从原始数组的每个元素中提取所有属性。例如,如果某些元素具有不同的属性。

尝试以下操作:

const array = [{'name': 'John', 'lastname' :'Doe'},{'name': 'Roe', 'lastname' :'Doe'}];

const result = new Set(array.flatMap(e => Object.keys(e), []));

console.log(Array.from(result));

希望这会有所帮助!

关于JavaScript如何将数组属性提取到另一个数组中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60827829/

相关文章:

javascript - 使用 Javascript 维护一组选择下拉列表

javascript - 从数组复制值时会跳过某些值

arrays - 计数好的子数组 - 了解滑动窗口技术而不是前缀和

javascript - 单选按钮未在 Angular 2 中被检查

javascript - shouldComponentUpdate 和内置 diffing 之间的区别

javascript - jQuery 或 Javascript 可以更改文本区域内的元素吗?

javascript - 动态改变变量

javascript - 导入管道抛出 Typescript 属性不存在错误

javascript - 如何通过套接字事件停止setTimeOut?

javascript - AngularJS - 获取多个 JSON 键值,然后将它们相加