kkr*_*aai 10 javascript lodash
我需要一个函数isSubset,当给定两个对象时,它会比较它的值并判断一个对象是否是另一个对象的子集.
object1 = { pickUpLocation : {city : 'Hyderabad', state: 'Telangana' }};
object2 = { dist : 322, pickUpLocation: {city : 'Hyderabad', state: 'Telangana' }};
Run Code Online (Sandbox Code Playgroud)
isSubset(object1, object2); //should return true
Run Code Online (Sandbox Code Playgroud)
object3 = { pickUpLocation : {city : 'Chennai', state: 'Telangana' }}
object4 = { dist : 322, pickUpLocation: {city : 'Hyderabad', state: 'Telangana' }}
Run Code Online (Sandbox Code Playgroud)
isSubset(object3, object4) //should return false as city's value is different
Run Code Online (Sandbox Code Playgroud)
使用 lodash 可以很容易地完成。
import _ from 'lodash'
const isSubset = (aSubset, aSuperset) => (
_.every(aSubset, (val, key) => _.isEqual(val, aSuperset[key]))
)
Run Code Online (Sandbox Code Playgroud)
用法:
const object1 = { pickUpLocation: { city: 'Hyderabad', state: 'Telangana' }}
const object2 = { dist: 322, pickUpLocation: { city: 'Hyderabad', state: 'Telangana' }}
isSubset(object1, object2)
Run Code Online (Sandbox Code Playgroud)
您可以尝试使用isSubset包.
这是真的
isSubset(
{ dist : 322, pickUpLocation: {city : 'Hyderabad', state: 'Telangana' }},
{ pickUpLocation : {city : 'Hyderabad', state: 'Telangana' }}
);
Run Code Online (Sandbox Code Playgroud)
这是错误的
isSubset(
{ dist : 322, pickUpLocation: {city : 'Hyderabad', state: 'Telangana' }},
{ pickUpLocation : {city : 'Chennai', state: 'Telangana' }}
);
Run Code Online (Sandbox Code Playgroud)
有点晚了,但它可能会帮助某人在不使用任何外部库的情况下寻找答案。
isSubset = (superObj, subObj) => {
return Object.keys(subObj).every(ele => {
if (typeof subObj[ele] == 'object') {
return isSubset(superObj[ele], subObj[ele]);
}
return subObj[ele] === superObj[ele]
});
};
let object1 = { pickUpLocation : {city : 'Hyderabad', state: 'Telangana' }};
let object2 = { dist : 322, pickUpLocation: {city : 'Hyderabad', state: 'Telangana' }};
console.log(isSubset(object2, object1));
let object3 = { pickUpLocation : {city : 'Chennai', state: 'Telangana' }}
let object4 = { dist : 322, pickUpLocation: {city : 'Hyderabad', state: 'Telangana' }}
console.log(isSubset(object4, object3));Run Code Online (Sandbox Code Playgroud)
小智 0
function isSubset(obj1, obj2) {
for (var key in obj2){
if (JSON.stringify(obj2[key]) === JSON.stringify(obj1[key]))
return true;
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
编辑:现在是通用的,但如果想要更通用,您应该看到以下链接进行比较 /sf/answers/80097461/