-
2022-03-10 15:22:27
获取key值有下列几种方法:
- for..in... 原型链上 继承过来可枚举的都可拿到
- object.keys 返回一个数组-----是如何排序的?先排合法的数组索引(0.1.2.3.4 整数)再按照字符串(a,b,c)创建顺序排序,再symble类型创建时间 (可枚举都能拿到)
- Object.getOwnPropertyNames(obj)返回一个数组,拥有自身的可枚举属性和不可枚举属性.但是不可以拿到Symbol作为键的属性。
- Object.getOwnPropertySymbols(obj) 方法返回一个给定对象自身的所有 Symbol 属性的数组。
- reflect.ownKeys() 返回一个由目标对象自身的属性键组成的数组。相当于Object.getOwnPropertyNames(obj)方法 和 Object.getOwnPropertySymbols(obj)的合并。
提到for...in... 想到 和for...of...的区别
- for..in... 遍历key值,遍历原型链上、继承过来可枚举的都可拿到
- for of 遍历value,只能遍历有迭代器属性
更多相关内容 -
获取一个对象下所有的键(key)
2020-09-04 00:56:56// object.keys var obj = { name: 'asd', ... // 会返回一个数组 // ["name", "age", "num"] // for in var list = [] for (const key in obj) { list.push(key) console.log(key) } // li// object.keys var obj = { name: 'asd', age: 20, num: 88 } var keys = Object.keys(obj) console.log(keys) // 会返回一个数组 // ["name", "age", "num"] // for in var list = [] for (const key in obj) { list.push(key) console.log(key) } // list: ['name', 'age', 'num'] // name age num // Object.values() //获取所有的value值 // Object.entries() //分别将keys 和 values 放到两个数组中
-
js几种获取对象key的方法和区别
2022-03-27 21:49:47js几种获取对象key的方法和区别 1、Object.keys() , 遍历自身可以枚举属性 let myColors = { color1: 'pink', color2: 'red' }; let yourColors = { color3: 'green', color4: 'blue' }; Object....js几种获取对象key的方法和区别
1、Object.keys() , 遍历自身可以枚举属性
let myColors = { color1: 'pink', color2: 'red' }; let yourColors = { color3: 'green', color4: 'blue' }; Object.setPrototypeOf(yourColors, myColors); //setPrototypeOf()设置一个指定的对象的原型到另一个对象or NULL Object.keys(myColors); Object.keys(yourColors); console.log(myColors); console.log(yourColors); console.log(myColors['color1']); console.log(yourColors['color3']);
解析:Object.keys(myColors) 返回 myColors对象的自身可枚举属性键;Object.keys(yourColors)也是返回yourColors对象自身的可枚举属性键。setPrototypeOf()方法让yourColors继承myColors原型的属性,但是能看到并不能遍历出来。Object.keys() 是 遍历自身可以枚举属性。
2、Ojbect.values() /Ojject.entries(),返回自身可枚举属性的键值对数组
let myColors = { color1: 'pink', color2: 'red' }; let yourColors = { color3: 'green', color4: 'blue' }; Object.setPrototypeOf(yourColors, myColors); console.log(Object.values(myColors)); console.log(Object.entries(myColors));
3、for-in 遍历可枚举属性,prototype 属性
for-in遍历对象所有的可枚举属性,包括原型。
ps:for-in和for-of的区别
①for in 遍历的是数组的索引(即键名),for of遍历的是数组元素值
②for in 得到对象的key or 数组 or 字符串的下标
③for of 得到对象的value or 数组 or 字符串的值
for in更适合遍历对象
let myColors = { color1: 'pink', color2: 'red' }; let yourColors = { color3: 'green', color4: 'blue' }; Object.setPrototypeOf(yourColors, myColors); let arrayColors = []; for (let key in yourColors) { arrayColors.push(key); } console.log(arrayColors);
解析:arrayColors 数组 包含yourColors自身属性键,也有从原型对象myColrs继承的属性。
4、hasOwnProperty ,遍历可枚举属性
返回一个布尔值,只能判断自有属性是否存在,对于继承属性会返回false,因为它不查找原型链的函数
//不使用hasOwnProperty,返回自身属性和继承原型属性 let myColors = { color1: 'pink', color2: 'red' }; let yourColors = { color3: 'green', color4: 'blue' }; Object.setPrototypeOf(yourColors, myColors); for (let i in yourColors) { console.log(i); }
//使用hasOwnProperty,返回自身属性 let myColors = { color1: 'pink', color2: 'red' }; let yourColors = { color3: 'green', color4: 'blue' }; Object.setPrototypeOf(yourColors, myColors); for (let i in yourColors) { if (yourColors.hasOwnProperty(i)) { //加上if判断去掉原型链上的 console.log(i) } }
5、getOwnPropertyNames() 返回可枚举属性和不可枚举属性,不包括prototype属性,不包括symbol类型的key
getOwnPropertyNames()返回一个对象自身所有的属性,包括可枚举和不可枚举属性组成的数组
//返回对象自身所有的属性,可枚举和不可枚举组成的数组,但不包括prototype属性 let myColors = { color1: 'pink', color2: 'red' }; let yourColors = { color3: 'green', color4: 'blue' }; Object.setPrototypeOf(yourColors, myColors); //定义不可枚举属性 Object.defineProperty(yourColors, 'your', { enumerable: true, value: 6, }) console.log(Object.getOwnPropertyNames(yourColors));
//返回对象自身所有的属性,可枚举和不可枚举组成的数组,但不包括Symbol类型的key let _item = Symbol('item') //定义Symbol数据类型 let myColors = { color1: 'pink', color2: 'red', }; let yourColors = { color3: 'green', color4: 'blue', [_item]: 'mySymbol' }; Object.setPrototypeOf(yourColors, myColors); //定义不可枚举属性 Object.defineProperty(yourColors, 'your', { enumerable: true, value: 6, }) console.log(Object.getOwnPropertyNames(yourColors));
6、getOwnPropertySymbols() 返回symbol类型的key属性,不关心是否可枚举
返回对象自身的所有Symbol属性组成的数组
let _item = Symbol('item') //定义Symbol数据类型 let myColors = { color1: 'pink', color2: 'red', }; let yourColors = { color3: 'green', color4: 'blue', [_item]: 'mySymbol' }; Object.setPrototypeOf(yourColors, myColors); //定义不可枚举属性 Object.defineProperty(yourColors, 'your', { enumerable: true, value: 6, }) console.log(Object.getOwnPropertySymbols(yourColors));
7、对象对key的获取方法
function getkey() { let obj = { a: 1, b: 2, c: 3 }; Object.prototype.d = 4; Object.defineProperty(obj, 'e', { configurable: true, writable: false, enumerable: false, value: 5 }); Object.defineProperty(obj, 'f', { configurable: true, writable: false, enumerable: true, value: 6 }); const symbolg = Symbol('g'); const symbolh = Symbol('h'); Object.defineProperty(obj, symbolg, { configurable: true, writable: false, enumerable: false, value: 7 }); Object.defineProperty(obj, symbolh, { configurable: true, writable: false, enumerable: true, value: 8 }); console.log(); for (let key in obj) { console.log('-- for-in:', key); if (obj.hasOwnProperty(key)) { console.log('-- hasOwnProperty: ', key); } } console.log('-- getOwnPropertyNames: ', Object.getOwnPropertyNames(obj)); console.log('-- getOwnPropertyDescriptor: ', Object.getOwnPropertyDescriptor(obj)); console.log('-- getOwnPropertySymbols: ', Object.getOwnPropertySymbols(obj)); console.log('-- keys: ', Object.keys(obj)); } /*** * -- for-in: a -- hasOwnProperty: a -- for-in: b -- hasOwnProperty: b -- for-in: c -- hasOwnProperty: c -- for-in: f -- hasOwnProperty: f -- for-in: d -- getOwnPropertyNames: (5) ["a", "b", "c", "e", "f"] -- getOwnPropertyDescriptor: undefined (可获取对象属性的具体配置,总共是6个) -- getOwnPropertySymbols: (2) [Symbol(g), Symbol(h)] -- keys: (4) ["a", "b", "c", "f"] */
8、对象声明/对象赋值
/** * 对象声明 * 首选 {} * * 对象赋值 * 首选 对象内赋值 */ function getKey(flag) { return `uniqued key ${flag}`; } const obj = { id: 5, name: 'San Francisco', [getKey('enabled')]: true, // 可变key提前声明 };
9、对象扩展
/** * * 对象 扩展 * * object assign 对象扩展 * 每次执行 assign * 事实上是对 object 原来对象的扩展然后并返回这个新的对象,🐘 * 原理的对象被修改 * * */ const row = { display: 'inline-block', height: '50px', lineHeight: '50px', } const rowLeft = Object.assign(row, { color: 'rgba(0,0,0,.4)' }); const rowRight = Object.assign(row, { color: 'rgba(0,0,0,.6)' }); console.log(rowLeft, rowRight, '同时都被修改为最新的assign值');
-
JS对象,获取key和value
2021-02-05 21:56:16var peopleobj={jiangyx: "姜艳霞", yeluosen: "叶落森"}for(let i in peopleobj){debuggervar obj={nickname:i,realName:peopleobj[i]}peopleArray.push(obj)}console.log(peopleArray)js对象的key类型http:...var peopleArray=[]
var peopleobj={jiangyx: "姜艳霞", yeluosen: "叶落森"}
for(let i in peopleobj){
debugger
var obj={
nickname:i,
realName:peopleobj[i]
}
peopleArray.push(obj)
}
console.log(peopleArray)
js对象的key类型
http://javascript.ruanyifeng.com/grammar/object.html#toc2 对象的所有键名都是字符串(ES6 又引入了 Symbol 值也可以作为键名),所以加 ...
理清JS数组、json、js对象的区别与联系
最近在敲代码时,遇上了一个关于JS数组的问题,由此引发了关于对象和json的联想,曾经觉得很畅顺的知识点突然模糊了.于是,为了理清这些东西,有了如下这篇文章.觉得没问题的猿们可以当复习,而那些带着疑问 ...
利用js对象的特性,去掉数组中的重复项
ebsong", qq:289483936 } 想要获取这个obj对象的键“name”和"qq&q ...
随机推荐
深入浅出讲解:php的socket通信
对TCP/IP.UDP.Socket编程这些词你不会很陌生吧?随着网络技术的发展,这些词充斥着我们的耳朵.那么我想问:1. 什么是TCP/IP.UDP?2. Socke ...
win8或win8.1修改注册表失败的原因
win8 and win8.1 modify the registry need compiled to be different versions according to the os bits.
bootstrap插件小记
1.模态框 除了通过data-toggle和data-target来控制模态弹出窗之外,Bootstrap框架针对模态弹出框还提供了其他自定义data-属性,来控制模态弹出窗.比如说:是否有灰色背景m ...
struts2由&;lt;s:tree&;gt;要么dtree小工具 建立树
一个 .方法: 1.引入新的标签:
CodeForces 605A Sorting Railway Cars 思维
早起一水…… 题意看着和蓝桥杯B组的大题第二道貌似一个意思…… 不过还是有亮瞎双眼的超短代码…… 总的意思呢…… 就是最长增长子序列且增长差距为1的的…… 然后n-最大长度…… 这都怎么想的…… 希望 ...
(七十三)iOS本地推送通知的实现
iOS的推送通知分为本地推送和网络推送两种,如果App处于挂起状态,是可以发送本地通知的,如果已经被杀掉,则只有定时通知可以被执行,而类似于QQ的那种网络消息推送就无法实现了,因为App的网络模块在被 ...
idea引用本地jar包的方法及报错解决
1 首先将本地jar包打入mvn本地仓库 cmd mvn install:install-file -Dfile=E://xx.jar 本地jar包绝对路径 -DgroupId=com.ccp -Da ...
用Java进行大数处理(BigInteger)-hdu1042
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1042 题目描述: 代码实现: import java.util.Scanner; import jav ...
CF733F Drivers Dissatisfaction【链剖】【最小生成树应用】
F. Drivers Dissatisfaction time limit per test 4 seconds memory limit per test 256 megabytes input s ...
c# 7 vs2017 tuple
var unnamed = (42, "The meaning of life"); var anonymous = (16, "a perfect square& ...
-
JS获取对象中key值的两种方法
2021-08-18 14:51:17例: test:{ name:'小明', age:12, address:'北京', } 方法一: 使用for…in for(let ele in test){ ...Object.keys(test) //该方法获取到的是一个数组 结果:[‘name’,‘age’,‘address’] ... -
怎么获取对象的key值
2020-04-23 10:00:19一般获取对象的key值有两种方法: for...in... for...in...是遍历对象的所有key值。 function a(){ const b={"x":"c","y":"d"}; for(let key in b){ console.log(key); } } a(); 输出结果为:"x" "y" ... -
获取Object对象的Key值
2020-07-07 10:55:02拓展方法:通过反射获取对象的属性值 public static object GetPropertyValue(this object info, string field) { if (info == null) return null; Type t = info.GetType(); IEnumerable<System.Reflection.... -
js 获取对象的key名和key值
2021-05-06 11:16:28使用for in遍历对象时,需要用hasOwnProperty(key)方法过滤掉非对象自身的属性(继承自原型链的属性) var obj = { "name" : "zh", "age" : 22, } for(var key in obj){ //遍历对象的所有属性,包括原型链上的... -
js 获取对象的key和value
2020-12-08 17:06:29获取对象的 keys 数组:Object.keys(obj) 获取对象的 values 数组:Object.values(obj) let obj = { name: '张三', age: 30, sex: '男' ...获取 keys的第一个: Object.keys(obj)[0] // name ... -
Js中获取对象的所有key值
2020-08-14 13:25:22假如现在有一个对象 var obj = { A:2 ,B:"Ray" ,C:true ,D:function(){} } 如果想遍历对象obj中的所有键值,一般是用以下方式 for(var key in obj){ console.log(key,obj[key]) } 输出: A 2 B Ray C ... -
Js 之获取对象key值
2019-12-19 17:51:26var data={8:102,9:103,10:106};console.log(data);//{8:102,9:103,10:106}console.log(Object.keys(data));//["8", "9", "10"] ...所以只要Object.keys(data)[0], 就可以获得第一个键值对的key值 ... -
ES6中获取对象的key
2020-12-20 06:11:06ES6中获取对象的keyconst json = {‘a‘: 123, ‘b‘: 321};Object.keys(json).forEach(key => {window.console.log(key);}); // [a,b]ES6一共有五种方法可以遍历对象的属性。for ... in:循环遍历对象自身的和... -
js中获取json对象的key名称的两种方法
2021-09-06 16:30:45javascript获取json对象的key名称的两种方法第一种方法第二种方法 第一种方法 ... for (key in obj){ ...javascript中,Object具有一个key属性,可以返回json对象的key的数组 (Object has a property keys, returns -
【vue】对象根据key获取value以及根据value获取key
2021-01-13 15:58:01准备数据 data(){ return { obj:{ '001':'a', '002':'b', '003':'c', '004':'d' } } }, 1、遍历对象获取所有的key和value for (let k in this.obj){ console.log(k -
JavaScript中获取json所有的Key作为一个数组,并利用变量作为json对象的KEY,来获取属性值。
2020-07-13 10:33:00JavaScript中将变量作为json对象的KEY,来...1、获取json多有的key值,作为一个数组 var data={k:'aa',b:'aaa'}; var keyData=Object.keys(data) //keyData=['k','b'] 2、动态传变量作为key var data={k:'aa',b:'a -
获取对象的key和value
2019-04-11 15:40:09ES5 引入了Object.keys方法,返回一个数组,成员是参数对象自身的(不含继承的)所有可遍历( enumerable )属性的键名。 var obj = { foo: "bar", baz: 42 };Object.keys(obj)// ["foo", "baz"] 目前, ES7 有一... -
获取对象的key【键】和分别获取数组的key【键】和值
2019-09-18 11:38:10一、先说对象,如何获取key【键】; var obj={ name:"websong", qq:289483936 } 想要获取这个obj对象的键“name”和"qq",需要用到内置对象Object的keys方法,代码如下: Object.keys(obj).forEach(function(key... -
循环对象获取对象中key与value的两种方法
2020-05-07 14:17:52一、for in 方法 var apple = { id:1, name:"apple", price:4 }; for(let obj in apple){ console.log(obj+"----->"+apple[obj]); // id----->1 // name----->apple // price-----&... -
js对象中通过key获取value的小总结
2021-11-17 17:06:05首先获取对象中的value有几种方法,本处只写出原生的方法 const obj = { name1: '鲨鱼辣椒', info: { address: { location: 'beijin', }, }, } 获取name1 1. obj.name1 2. obj['name1'] 以上两种方法均可以获取到结果... -
vue 将数组对象某一个key值进行计算,如何再调用此计算的值
2020-12-21 22:11:321,直接上代码el: '#flip-list-demo',data: {test:[],items11: [{number:1,name:'北京',money:8889},{number:2,name:'广东',money:8888},{number:3,name:'天津',money:8888},],items12:[{number:4,name:'浙江',money... -
JS 怎么将一个对象的值作为另一个对象的key
2019-04-25 16:24:05获取一个对象的 key 中的 value,把他作为另一个对象的 key。 首先想到的是,获取到 value,把值作为 key ,但实际上获取的值放到 tc中。(let tc = val.tcId,tc = 1)当我们把 tc 作为 key 值时,系统不会把 1... -
js 对象key和value的获取方法。
2019-07-23 10:49:39在js里如何获取对象的key值和对应的value呢? 我们将使用两种方法获取。 // 自定义方法变量,获取对象的value,keys var values = function(object) { var values = []; for (var key in object) values.push... -
如何获取JavaScript对象的第一个键名?
2020-06-28 03:53:45假设我们现在有一个对象,其第一个键名称是fruits,值是fruits的数组。 const fruitObj={ fruits: ['apple','banana','orange','peach'] } console.log(fruitObj[0]); Output 输出量 undefined Since objects do ... -
JS获取对象数组特定key对应的值数组
2020-11-22 23:01:35想获取对象数组特定key对应的值数组,发现JS并无相关函数。也可以理解,因为JS中的对象数组的里面的对象可能为null对象,操作此值直接抛异常,咋不这么极端,在正常对象数组的情况下,可以如下实现该功能。当然你也... -
如何获取对象的key
2017-10-27 17:24:02var tt={'my':'hello'};for(var i in tt){console.log(i)} -
js 从一个对象中取其中的几个key 和value 组成数组对象
2020-12-07 17:53:36cid: "4654", coupon_id: "0,0", discount: 0, freight: "107", freight_price: "20", is_distribution: "0", mch_id: "154", membership_price: 4, num: "1", pid: "912", price: "400.00", } //想分别获取它的key ... -
Vue在页面和方法中分别通过遍历对象获取对象的键(key)和值(value)
2021-07-22 16:49:29最近通过对对象相关知识的深入学习,我发现对对象的遍历主要分为两种情况,一种是在页面中遍历,另外一种是在方法中遍历对象,现在我们就从这两种情况分别来遍历对象获取对象的key和value。 情况一:在页面中遍历... -
如何获取JS对象的第一个键的值
2020-10-07 21:57:591.遍历对象,在第一个键值对的地方跳出来 var form={user:'zhangsan',type:'vip'} var val=null;//用来记录第一个键值对的值 for(var key in form) { val=form[key]; break; } 2.把对象转化为数组,然后用数组的... -
typescript/ts 对象根据value获取key
2021-06-18 10:00:00const user = { name: 'abl', age: 24, sex: '男' } type Compare<T, U> = (a: T, b: U) => boolean; function findKey<T, U extends T[keyof T]>...T[keyof T], U>... ): keyo -
获取json对象中的key小技巧
2019-04-28 23:49:26比如有一个json var json = {"name" : "Tom", "age" : 18}; 想分别获取它的key 和 value for (var key in json) { console.log(key); //获取key值 console.log(json[key]); //获取对应的value值 } 还要一种...