首页 > 解决方案 > 从对象中提取属性名称的问题 (JAVASCRIPT)

问题描述

我有一个对象数组(我认为!),我需要从给定对象中提取属性名称(例如“昵称”)。

var VarObjAndValue = newArr[0];

我得到了单独的数组(例如Object { nickname: “jhonny” })。

我现在如何从上面的对象中提取属性名称“昵称”?

列出键

var listPropertyNames = Object.keys(newArr);

仅提供从 0 到 6 的序列号,而不是所需的键名。

var StrToInclude = ["nickname", "name", "surname", "sex", "dob", "email", "phone"];
var newArr=[]; //Key name + its value

for (var i=0; i<StrToInclude.length; i++) {
  temp_obj = {};
  temp_obj[StrToInclude[i]] = document.getElementById(StrToInclude[i]).value;
  newArr.push(temp_obj);
}

console.log('newArr --> = ',newArr);
/**
 * newArr = [
 * { "nickname": “jhonny” },
 * { "name": “jonathan” },
 * { "surname": “ross” },
 * { "sex": “male” },
 * { "dob": “22/02/1984” },
 * { "email": “j@yahoo.com” },
 * { "phone": "123" }
 * ]
 */

var VarObjAndValue = newArr[0]; 
console.log('VarObjAndValue --> = ',VarObjAndValue); //if i=0 ----> Object { nickname: “jhonny” }

var VarObjAndValue = newArr[1]; 
console.log('VarObjAndValue --> = ',VarObjAndValue); //if i=1 ----> Object { name: "jonathan" }

var listPropertyNames = Object.keys(newArr);
console.log('listPropertyNames --> = ',listPropertyNames); //Array(7) [ "0", "1", "2", "3", "4", "5", "6" ] (not useful for this...)

标签: javascript

解决方案


newArr.map(obj => Object.keys(obj)).flat()

newArr.map(obj => Object.keys(obj)[0]) 来自dave的评论

newArr.reduce((keys, o) => [...keys, ...Object.keys(o)], [])

将所有属性名称作为数组提供

不确定这是否是您想要的,但您已经获得了这些属性名称StrToInclude

const newArr =
                [
                  {
                    "nickname": "jhonny"
                  },
                  {
                    "name": "jonathan"
                  },
                  {
                    "surname": "ross"
                  },
                  {
                    "sex": "male"
                  },
                  {
                    "dob": "22/02/1984"
                  },
                  {
                    "email": "j@yahoo.com"
                  },
                  {
                    "phone": "123"
                  }
                ]
                
                
console.log(newArr.map(obj => Object.keys(obj)[0]))


推荐阅读