2016-09-29 6 views
0

私はより読みやすい形で次のことをどのように行うのですか?:問題のオブジェクトは、複数のプロパティだけで、B、CC、およびdを有すること比較二つのオブジェクト

if (nextProps.a !== this.props.a || 
     nextProps.b !== this.props.b || 
     nextProps.cc !== this.props.cc || 
     nextProps.d !== this.props.d){ 

} 

注けど私はこれらのプロパティだけの比較をしたいです。私はES6を使用しています。

答えて

1

私は方法書きます。この

isOk = true; 
props = ["a","b","cc","d"]; //replace this with whatever your properties are from 
for(i in props){ 
    if(nextProps[i]==this.props[i]){ 
     isOk = false; 
      break; 
    } 
} 

if(isOk){ 
    // :) 
} 
0
var names = Object.getOwnPropertyNames(nextProps); 

var result = false; 
for (var i = 0; i < names.length; i++) { 
    result = nextProps[names[i]] !== this.props[name[i]]; 
    if (result) 
     break; 
} 
if (result) { 
    // ... 
} 
0

のようなものを試してみてください:List.someを使用して

// Comparison of all properties equal 
 
function propsEqual(obj1, obj2, props) { 
 
    var equal = true; 
 
    var propsLen = props.len; 
 
    while(propsLen-- && equal) { 
 
    var prop = props[propLen]; 
 
    equal = obj1[prop] === obj2[prop]; 
 
    } 
 
    return equal; 
 
} 
 

 
// Comparison of any properties equal 
 
function anyPropsEqual(obj1, obj2, props) { 
 
    var equal = false; 
 
    var propsLen = props.len; 
 
    while(propsLen-- && !equal) { 
 
    var prop = props[propLen]; 
 
    equal = obj1[prop] === obj2[prop]; 
 
    } 
 
    return equal; 
 
}

0

let a = {orgId: 1,roleId:2, userGroupId:3, userId:4}; 
 
let b = {orgId: 1,roleId:2, userGroupId:3, userId:4}; 
 
console.log(["orgId","roleId","userGroupId","userId"].some(v => a[v] !== b[v])); 
 

 
a = {orgId: 1,roleId:2, userGroupId:3, userId:5}; 
 
b = {orgId: 1,roleId:2, userGroupId:3, userId:4}; 
 
console.log(["orgId","roleId","userGroupId","userId"].some(v => a[v] !== b[v])); 
 

 
a = {orgId: 1,roleId:2, userGroupId:3, userId:4}; 
 
b = {orgId: 2,roleId:2, userGroupId:3, userId:4}; 
 
console.log(["orgId","roleId","userGroupId","userId"].some(v => a[v] !== b[v]));

関連する問題