比較兩個對象如何做在一個更可讀的方式?:由多個屬性
if (nextProps.a !== this.props.a ||
nextProps.b !== this.props.b ||
nextProps.cc !== this.props.cc ||
nextProps.d !== this.props.d){
}
注意,所討論的對象具有更多的屬性以下是,只是A,B,CC,和d但我只想比較這些屬性。我正在使用ES6。
比較兩個對象如何做在一個更可讀的方式?:由多個屬性
if (nextProps.a !== this.props.a ||
nextProps.b !== this.props.b ||
nextProps.cc !== this.props.cc ||
nextProps.d !== this.props.d){
}
注意,所討論的對象具有更多的屬性以下是,只是A,B,CC,和d但我只想比較這些屬性。我正在使用ES6。
嘗試這樣的事情
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){
// :)
}
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) {
// ...
}
我會寫一個方法:
// 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;
}
使用List.some:
["orgId","roleId","userGroupId","userId"].some(v => a[v] !== b[v])
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]));