查找对象是否是javascript中另一个对象的子集

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)

Bit*_*rse 15

使用Lodash isMatch

_.isMatch({prop: 'object', id: 3}, {prop: 'object'})

在对象和源之间执行部分深度比较,以确定对象是否包含等效的属性值.


jca*_*ady 6

使用 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)


xfg*_*xfg 5

您可以尝试使用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)


Aks*_*oor 5

有点晚了,但它可能会帮助某人在不使用任何外部库的情况下寻找答案。

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/