js中对象获取key和value

自定义方法

function getObjectKeys(object) {
    var keys = [];
    for (var key in object)
         keys.push(key);
         return keys;
 }
function getObjectValues(object) {
    var values = [];    
    for (var key in object)        
      values.push(object[key]);    
       return values;
 }

利用Object的keys()

/* 
* 利用Object的keys()方法获取 key值,再利用array里的sort()转化为有序数组         
* 获取value值同理,sort()方法可用可不用。
*/
var keys = Object.keys(arrayObject).sort();
var values = Object.values(arrayObject);
var keys_p = Object.getOwnPropertyNames(arrayObject);

大部分情况下Object.getOwnPropertyNames()Object.keys(obj)的功能是一样的,我们一般也是用来获取一个JSON对象中所有属性,例如

var obj = {
    property1: 1,
    property2: 2,
};

console.log(Object.keys(obj));
console.log(Object.getOwnPropertyNames(obj));

输出:

> Array ["property1", "property2"]
> Array ["property1", "property2"]

可以看到两种方法输出的结果是一样的,那么这两种方法完全一样吗?答案一般来讲不是,如果一样何必大动干戈定义两种方法
那么这两种方法区别在哪里呢?那就是Object.getOwnPropertyNames返回的是对象所有自己的属性,而Object.keys(obj)则返回的是所有可枚举属性,也就是属性下的enumerable: false,看例子:

var obj = {};
Object.defineProperties(obj, {
    property1: {enumerable: true, value: 1},
    property2: {enumerable: false, value: 2},
});

console.log(Object.keys(obj));
console.log(Object.getOwnPropertyNames(obj));

输出:

> Array ["property1"]
> Array ["property1", "property2"]

可以看到输出结果不一样了,enumerable: falseObject.keys干掉了。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇