JS获取对象键值对中key值的方法

article/2025/8/27 12:25:09

使用Object.keys


Object.keys( ) 会返回一个数组,数组中是这个对象的key值列表

所以只要Object.keys(a)[0], 就可以得只包含一个键值对的key值


下面是MDN中对Object.keys的描述

Object.keys() 方法会返回一个由一个给定对象的自身可枚举属性组成的数组,数组中属性名的排列顺序和使用 for...in 循环遍历该对象时返回的顺序一致 (两者的主要区别是 一个 for-in 循环还会枚举其原型链上的属性)

语法

Object.keys(obj)

参数

obj
要返回其枚举自身属性的对象。

返回值

一个表示给定对象的所有可枚举属性的字符串数组。

描述

Object.keys 返回一个所有元素为字符串的数组,其元素来自于从给定的object上面可直接枚举的属性。这些属性的顺序与手动遍历该对象属性时的一致。

例子

// simple array
var arr = ['a', 'b', 'c'];
console.log(Object.keys(arr)); // console: ['0', '1', '2']// array like object
var obj = { 0: 'a', 1: 'b', 2: 'c' };
console.log(Object.keys(obj)); // console: ['0', '1', '2']// array like object with random key ordering
var anObj = { 100: 'a', 2: 'b', 7: 'c' };
console.log(Object.keys(anObj)); // console: ['2', '7', '100']// getFoo is a property which isn't enumerable
var myObj = Object.create({}, {getFoo: {value: function () { return this.foo; }} 
});
myObj.foo = 1;
console.log(Object.keys(myObj)); // console: ['foo']

如果你想获取一个对象的所有属性,,甚至包括不可枚举的,请查看Object.getOwnPropertyNames

注意

在ES5里,如果此方法的参数不是对象(而是一个原始值),那么它会抛出 TypeError。在ES2015中,非对象的参数将被强制转换为一个对象。

Object.keys("foo");
// TypeError: "foo" is not an object (ES5 code)Object.keys("foo");
// ["0", "1", "2"]                   (ES2015 code)

Polyfill

要在原生不支持的旧环境中添加兼容的Object.keys,请复制以下代码段:

if (!Object.keys) {Object.keys = (function () {var hasOwnProperty = Object.prototype.hasOwnProperty,hasDontEnumBug = !({toString: null}).propertyIsEnumerable('toString'),dontEnums = ['toString','toLocaleString','valueOf','hasOwnProperty','isPrototypeOf','propertyIsEnumerable','constructor'],dontEnumsLength = dontEnums.length;return function (obj) {if (typeof obj !== 'object' && typeof obj !== 'function' || obj === null) throw new TypeError('Object.keys called on non-object');var result = [];for (var prop in obj) {if (hasOwnProperty.call(obj, prop)) result.push(prop);}if (hasDontEnumBug) {for (var i=0; i < dontEnumsLength; i++) {if (hasOwnProperty.call(obj, dontEnums[i])) result.push(dontEnums[i]);}}return result;}})()
};

上面的代码在IE7(也许IE8也是)下有个问题,就是如果传入一个来自其他 window 对象下的对象时,不可枚举的属性也会获取到。



http://chatgpt.dhexx.cn/article/hQJr2KQB.shtml

相关文章

C# 键值对

1.初始化一个键值对 1 //初始化定义一个键值对&#xff0c;注意最后的括号 2 Dictionary<int, string> dic new Dictionary<int, string>(); 2.为键值对添加元素 1 //键值对的Add函数 2 dic.Add(2, "zhao"); 3 dic.Add(4, "qian"); 4 dic…

js中往数组对象中添加键值对的方法有哪些?

❤️❤️❤️Topology-le5le智慧光伏能源可视化方案❤️❤️❤️ &#x1f31f;&#x1f31f;&#x1f31f;Topology可视化绘图引擎&#x1f31f;&#x1f31f;&#x1f31f; 1.Object.assign() 用法&#xff1a;Object.assign(源对象, {要添加的键值对}) 2.拓展运算符&…

键值对操作

键值对 RDD 通常用来进行聚合计算。我们一般要先通过一些初始 ETL(抽取、转化、装载)操作来将数据转化为键值对形式。键值对 RDD 提供了一些新的操作接口(比如统计每个产品的评论,将数据中键相同的分为一组,将两个不同的 RDD 进行分组合并等)。 1. 动机 Spark 为包含键值对类…

java键值对的使用

Map集合没有继承Collection接口&#xff0c;但是其提供了key到value的映射。每一个key不能有相同&#xff0c;每个key只能映射一个value值。 Map接口常用方法&#xff1a; 方法功能描述put(K key, V value)向集合中添加指定的key与value的映射关系containsKey(Object key)如果…

C++ map容器(键值对)

文章目录 1&#xff0c;map简介2&#xff0c;map的功能3&#xff0c;使用map4&#xff0c;map的构造函数5&#xff0c;插入元素6&#xff0c; 查找元素7&#xff0c; 刪除与清空元素8&#xff0c;map的大小9&#xff0c;map的基本操作函数&#xff1a; 使用示例示例1 20221027 …

java 键值对详解及java键值对代码

在 Java中&#xff0c;对象可以理解为一个列表。这个列表里面的每个元素都是一个“键”&#xff0c;而每个“键”都是一个值。 键值对的概念&#xff0c;并不是在 Java中第一次出现&#xff0c;在 java 1.x中就已经有了。那时候它的意思是在一个命名空间中建立两个名字相同的对…

node(map对象/键值对,作用域,函数作用域,全局作用域)

map键值对 什么是键值对? 键值对(key value) 顾名思义,每一个键会对应一个值。 比如&#xff1a; 身份证号和你本人是绑定的关系。每一个身份证号(键)都会对应一个小可爱(值)。 我们在登录微信或者游戏时,需要输入手机号验证身份。系统会向该手机号发送一条验证短信。 这里的…

键值对是什么?

一、键值对问题&#xff1a; 键值对&#xff08;“key value”&#xff09;&#xff0c;顾名思义&#xff0c;每一个键会对应一个值。 二、举个例子 身份证号和你本人的绑定关系&#xff0c;在系统中输入身份证号(键)都会对应一个小可爱(值)。咱在登陆微信、游戏或外卖账号…

键值对

感谢传智播客C语言视频教程对作者的帮助。 一、键值对问题 1、什么是键值对 举个简单的例子&#xff0c;电话簿中&#xff0c;键&#xff1a;小马、值&#xff1a;18753137777。是一种简单的对应关系。 2、代码举例 键值对&#xff08;“key value”&#xff09;字符串&a…

MBR、EBR、OBR的区别和联系

先看图&#xff1a; 一块硬盘&#xff0c;最开始只能实现4个分区&#xff0c;也就是4个主分区。 后来的发展&#xff0c;4个分区不够用了&#xff0c;可以有一个分区作为扩展分区&#xff0c;用它来作为总扩展分区&#xff0c;里面可以分成很多个子扩展分区&#xff0c;每个子…

MBR分区结构、DPT分区表、EBR扩展引导

本文链接&#xff1a;http://www.blogfshare.com/mbr-dpt-ebr.html 主引导记录&#xff08;Master Boot Record&#xff0c;缩写&#xff1a;MBR&#xff09;&#xff0c;又叫做主引导扇区&#xff0c;是计算机开机后访问硬盘时所必须要读取的首个扇区&#xff0c;它在硬盘上的…

C语言读取磁盘分区信息(MBR、DPT、EBR)

文章目录 简介使用的函数1.CreateFile()函数打开设备2.DeviceIoControl()函数返回磁盘设备信息3.SetFilePointer()函数设置读取磁盘信息位置4.ReadFile()函数读取磁盘内容 源代码结果分析MBR部分&#xff1a;第一个EBR的DPT内容为&#xff1a;第2个EBR内容 总结 简介 在win8以后…

使用Epoch-Based Reclamation(EBR,特定域回收的一种方法)修改 lazy-list

如前文所说&#xff0c;lazy-list最大的隐患莫过于逻辑删除&#xff0c;而没有物理删除问题&#xff0c;因此EBR首先就把这个问题给他solve了。 一.EBR修改部分 int parse_delete(intset_l_t *set, val_t val) {node_l_t *pred, *curr;int result, validated, isVal;while(1)…

淘宝电商搜索EBR算法笔记

淘宝电商搜索EBR算法笔记 - 知乎《Embedding-based Product Retrieval in Taobao Search》介绍了淘宝目前最新的EBR算法。仍然是一个双塔的结构&#xff0c;query/user一个塔&#xff0c;item一个塔&#xff0c;各自得到向量表示&#xff0c;然后计算内积。 网络结构如上图所示…

解决西门子ebr设备模块更新报错,EQP_STATEVALUE more than one row

问题排查报告 原文来至 问题跟踪 首先定位到EQP_STATEVALUE表&#xff0c;发现数据出现重复&#xff1a; 执行语句取出所有非重复数据&#xff1a; select t.stateid,t.fk_statelistcst,t.code,t.label,t.functionid,t.pk_id,t.dlu,t.dluunit,t.cpt,t.haseqpimpact from EQP…

机械臂关节模组制动相关(零差云控eBr)

目录 前言一、电磁插销式抱闸1.原理2.特点 二、电磁摩擦片式制动器1.原理2.特点 三、零差云控电磁摩擦片式制动器&#xff08;eBreaker&#xff09;1.简介2.使用说明需要注意的事情3.接线 总结参考文献 前言 现阶段机械臂的制动方法主要有两种&#xff0c;一种是电磁插销式抱闸…

西门子EBR与BATCH通讯方法,mes与batch交互

最新更新请访问&#xff1a;mesebr.com 链接 1 前期准备 1.1 网络检查 两台服务器防火墙全部关闭&#xff1b;两台服务器之间可以相互ping同&#xff0c;若batch服务器连接oracle数据库的连接名称写的机器名&#xff0c;则batch服务器ping机器名也要可以ping通&#xff1b; 1…

WinHex数据恢复笔记-数据恢复与硬件维护-MBR格式--MBR,EBR系统结构

MBR&#xff0c;EBR系统结构 MBR限制2TB&#xff0c;最多有4个逻辑分区—如果有扩展&#xff08;3个主分区和1个扩展分区&#xff09; FAT32不能在大于32GB的盘上添加 MBR指向第一个EBR 第一个EBR(以链表)指向第二个EBR(以链表)指向第二个EBR(以链表)… MBR MBR数据结构 4…

西门子MES软件ebr脚本使用说明-SIMATIC IT EBR(Opcenter Execution Pharma

最新更新发布在此处 ebr脚本常用函数 ###参数输入输出 输入的type选择tag value;输出的type选择tag NAME; 实例 mData.InsertData ousNAME,0,straaa 输出文本 mData.InsertData ousAGE,1,age 输出数字html直接输出 mRecordText.WriteHTML str_htmlr 可直接输出html内…

每周一文(六)Facebook EBR向量召回模型

契机 从样本和模型两方面来介绍向量级别召回模型的由来。提出很有建设性的工业级别的参考价值。 样本角度 有监督的二分类模型需要构建正负样本&#xff0c;正样本的选择不管是召回和排序来说都是一致的&#xff0c;即用户有显式的点击行为的样本为正样本。而对于召回模型(甚…