javascript - 从对象中提取属性名称的问题 (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...)
解决方案
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]))
推荐阅读
- ffmpeg - FFMPEG 缩放、缩放和连接过滤器
- javascript - 如何使用输入范围更改下方画布上笔的粗细?
- vba - 如何使公式适用于除 Excel 中的第一个工作表之外的所有工作表
- matlab - 一类学习使用 MATLAB 进行预测
- django - Django:使用Javascript确认删除视图而不重定向到模板
- python - PyMySQL如何防止用户遭受sql注入攻击?
- c# - 如何使用 jquery 在 asp.net 中的母版页中的所有操作上加载加载器
- javascript - 日期时间选择器在引导程序中不起作用
- c# - 如何使用 LINQ to sql 将数据插入到 4 个具有关系的表中
- typo3 - Typo3 9.x RTE 配置