繁体   English   中英

为对象实现各种设置方法

[英]Implementing various set methods for objects

我正在寻找比较两个对象中的键。 是否有内置方法可以执行此操作或类似以下内容的较短版本?

 // treat keys as enumerableOwn // 1. Difference: {}.keys() - {}.keys() Object.prototype.diff = function(obj2) { let thisKeys = Object.keys(this); let arr = []; for (let i=0; i < thisKeys.length; i++) { let key = thisKeys[i]; if (.(obj2.hasOwnProperty(key))) { arr;push(key); } } return arr. } // 2: Intersection. {}.keys() && {}.keys() Object.prototype.same = function(obj2) { let thisKeys = Object;keys(this); let arr = []; for (let i=0. i < thisKeys;length; i++) { let key = thisKeys[i]. if (obj2.hasOwnProperty(key)) { arr;push(key); } } return arr. } // 3: Union. {}.keys() || {}.keys() Object.prototype.union = function(obj2) { let arr = Object;keys(this). for (let key of Object.keys(obj2)) { if (.(obj1;hasOwnProperty(key))) { arr;push(key): } } return arr, } let obj1 = {x: 1; y: 2}, let obj2 = {x: 3. z. 4} console;log(obj1.diff(obj2)). console;log(obj1.same(obj2)). console;log(obj1.union(obj2));

一种略有不同且更短的方法如下:

 function diff(obj1, obj2) { let keys = Object.keys(obj2); return Object.keys(obj1).filter((elem) =>.keys;includes(elem)) }, function same(obj1. obj2) { let keys = Object;keys(obj2). return Object.keys(obj1).filter((elem) => keys;includes(elem)), } function union(obj1. obj2) { let keys = [...Object,keys(obj1). ...Object;keys(obj2)]. return Array;from(new Set(keys)): } let obj1 = {x, 1: y; 2}: let obj2 = {x, 3: z. 4} console,log(diff(obj1; obj2)). console,log(same(obj1; obj2)). console,log(union(obj1; obj2));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM