2017-12-15 40 views
1

를 남겨 두 개체 : I 중복 제거와 요소를하지 얻을 수있는 방법개체에 중복 요소를 제거하고 내가 가지고있는 고유 한 요소

으로 obj1

{ 
    "uuid": "", 
    "open_bal_qty": 0, 
    "open_bal_value": 0, 
    "qty_min": 0, 
    "qty_med": 0, 
    "qty_max": 0, 
    "kedai_uuid": "198ceaef-4ced-4207-9ba0-62afbb42bb85" 
} 

obj2보다

{ 
    "uuid": "", 
    "open_bal_qty": 0, 
    "open_bal_value": 0, 
    "kedai_uuid": "198ceaef-4ced-4207-9ba0-62afbb42bb85" 
} 

내 새 obj 될 것입니다 obj2에 존재 :

NEWOBJ

{ 
    "qty_min": 0, 
    "qty_med": 0, 
    "qty_max": 0, 
} 

나는 pick을 lodash 사용할 수 있지만 수동으로 내가 필터링 할 키 이름을 입력 싶지 않다.

const newObj = pick(obj1, [ 
    'qty_min', 
    'qty_med', 
    'qty_max', 
]); 

미리 감사드립니다.

+0

(배열, [값])'온 키를 사용하여 선택 기능에서 사용하십시오. – fubar

답변

1

사용 for..in 확인하기 위해 객체와 Object.hasOwnProperty를 반복하는 두 번째 객체가 동일한 키를 갖는 경우

var obj1 = { 
 
    "uuid": "", 
 
    "open_bal_qty": 0, 
 
    "open_bal_value": 0, 
 
    "qty_min": 0, 
 
    "qty_med": 0, 
 
    "qty_max": 0, 
 
    "kedai_uuid": "198ceaef-4ced-4207-9ba0-62afbb42bb85" 
 
} 
 
var obj2 = { 
 
    "uuid": "", 
 
    "open_bal_qty": 0, 
 
    "open_bal_value": 0, 
 
    "kedai_uuid": "198ceaef-4ced-4207-9ba0-62afbb42bb85" 
 
} 
 
var newObj = {}; 
 
for (var keys in obj1) { 
 
    if (!obj2.hasOwnProperty(keys)) { 
 
    newObj[keys] = obj1[keys] 
 
    } 
 
} 
 

 
console.log(newObj)
와 3,739,

+1

주의 ... obj2에 고유 한 속성이있는 경우 작동하지 않습니다. – charlietfl

1

당신은 그 열쇠 두 객체의 키 사이의 차이를 발견하고 선택하여 _.difference와 함께 _.pick을 사용할 수

const obj1 = { 
 
    "uuid": "", 
 
    "open_bal_qty": 0, 
 
    "open_bal_value": 0, 
 
    "qty_min": 0, 
 
    "qty_med": 0, 
 
    "qty_max": 0, 
 
    "kedai_uuid": "198ceaef-4ced-4207-9ba0-62afbb42bb85" 
 
}; 
 

 
const obj2 = { 
 
    "uuid": "", 
 
    "open_bal_qty": 0, 
 
    "open_bal_value": 0, 
 
    "kedai_uuid": "198ceaef-4ced-4207-9ba0-62afbb42bb85" 
 
}; 
 

 
const obj1Keys = _.keys(obj1); //or Object.keys 
 
const obj2Keys = _.keys(obj2); 
 
console.log(_.pick(obj1Keys > obj2Keys ? obj1 : obj2, _.difference(obj1Keys, obj2Keys)))
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.js"></script>

2

lodash 당신 obj1에서 _.omit() 할 수있는 모든 _.keys()obj2의 : 당신은`_.difference 사용할 수

const obj1 = {"uuid":"","open_bal_qty":0,"open_bal_value":0,"qty_min":0,"qty_med":0,"qty_max":0,"kedai_uuid":"198ceaef-4ced-4207-9ba0-62afbb42bb85"}; 
 

 
const obj2 = {"uuid":"","open_bal_qty":0,"open_bal_value":0,"kedai_uuid":"198ceaef-4ced-4207-9ba0-62afbb42bb85"}; 
 

 
const newObj = _.omit(obj1, _.keys(obj2)); 
 

 
console.log(newObj);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.js"></script>