我需要映射来自服务器的数组,以将其字段更改为另一台服务器可以理解的字段,以便我可以将其上传到第二台服务器。
我的第一个挑战是获取来自第一台服务器的第一个数组的字段名称,将它们显示给用户,编辑它们,然后使用 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/