使用对象分配来删除不同的属性-ES6

Using object assign to delete properties that are different -ES6

本文关键字:属性 -ES6 删除 对象 分配      更新时间:2023-09-26

下面是2个对象,我想要的是对象。assign(initalPlan, data),但是我想删除data中没有提供的字段。

const initialPlan = {
        default_plan: false,
        external_plan_id: fakeString,
        public_available: true,
        name: fakeString,
        price: fakeNumber,
        pricing_period: fakeNumber,
        pricing_period_unit: fakeString,
        space_limit: fakeNumber,
        staff_max_limit: fakeNumber,
        staff_min_limit: fakeNumber,
        trial_period: fakeNumber,
        trial_period_unit: fakeString,
    };

和其他对象:

const data = {
            external_plan_id: plan.external_plan_id,
            space_limit: plan.space_limit,
            staff_min_limit: plan.staff_min_limit,
            staff_max_limit: plan.staff_max_limit,
            file_storage_limit: plan.file_storage_limit,
            file_storage_limit_unit: plan.file_storage_limit_unit,
            default_plan: plan.default_plan,
        };

任何想法?

在你有了datainitialPlan对象之后,你可以这样做来删除initialPlan上不存在于data上的属性。然后你可以使用Object.assign(initialPlan, data)

const dataKeys = Object.keys(data);
const initialPlanKeys = Object.keys(initialPlan);
initialPlanKeys.forEach(k => {
  if (!dataKeys.includes(k))
    delete initialPlan[k];
});

您应该使用Object.assign并删除所有不属于数据的键

const initialPlan = {
  key1: 1,
  key2: 2,
  key3: 3
}
const data = {
  key1: 10,
  key2: 0
}
Object.assign(initialPlan, data);
Object.keys(initialPlan).forEach(function(key){
   if(!data.hasOwnProperty(key)) delete initialPlan[key];
});
console.log(initialPlan)