我需要映射一个来自服务器的数组,以便将其字段转换为其他服务器可以理解的字段,这样我就可以将其上传到第二个服务器中。
我的第一个挑战是获取来自第一个服务器的第一个数组的字段名,将它们显示给用户,编辑它们,然后使用array.map()创建一个新数组,其中包含用户定义的字段名。
我的第一步是获取数组主字段名。让我说,我有以下几点:
array = [{'name': 'John', 'lastname' :'Doe'},{'name': 'Roe', 'lastname' :'Doe'}]其结果将是:
arrayFields = [{name, lastname}]我试着用getOwnPropertyNames()
getProp(){
console.log(Object.getOwnPropertyNames(this.array))
}结果是:
"0“、"1”、“长度” 0:"0“ 1:"1“ 2:“长度”
然后,我尝试使用Object.assign(),如这个堆栈问题中所提到的
getObject(){
let newObject = (Object.assign(this.array))
console.log(Object.getOwnPropertyNames(newObject))
}但这和之前的结果一样。
这是我正在使用的stackblitz。
想要的结果是:["name", "lastname"]
发布于 2020-03-24 09:09:58
您也可以使用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));
我希望这能帮到你!
发布于 2020-03-24 09:08:20
如果它们都采用相同的格式,则可以获取第一个元素并提取其键:
const a = [{'name': 'John', 'lastname' :'Doe'},{'name': 'Roe', 'lastname' :'Doe'}];
const dummyEntry = a[0];
console.log(Object.keys(dummyEntry));
对于您的对象,它将给[ "name", "lastname" ]
发布于 2020-03-24 09:09:33
您的getProp()函数几乎是正确的,只是需要对数组中的一个元素调用getOwnPropertyNames:
getProp(){
console.log(Object.getOwnPropertyNames(this.array[0]));
}https://stackoverflow.com/questions/60827829
复制相似问题