javascript / typescript-仅在定义时将项目添加到对象

时间:2019-03-28 11:01:12

标签: javascript json typescript object

假设我有一个对象调用userData = {..}

,我想从userData定义一个具有属性a,b,c和d的对象userDataB,但仅定义那些属性。我知道我可以做这样的事情:

userDataB = {}
if(userData.a){userDataB.a = a};
if(userData.b){userDataB.b = b};
...

但是,有清洁的东西吗?来自es5或es6的Mayber吗?

4 个答案:

答案 0 :(得分:1)

使用JSON方法-它们自动剥离undefined属性:

var userData = {
  a: "a",
  b: false,
  c: undefined,
  d: 0
};

var userDataB = JSON.parse(JSON.stringify(userData));

console.log(userDataB);

答案 1 :(得分:1)

这可能也有帮助

void Sort(bool flag)
{
if(flag == false)
{
    //ordina stringhe
    int NumString = 0;

    cout<<"Number of strings: ";
    cin>>NumString; //!!
    char *Vector[NumString];

    for(int i=0;i<NumString;i++)
    {
        cout<<"Insert the "<<i<<" element: ";
        cin>>Vector[i];

        int Val = 0;
        char* swap;

        for(int i=0;i<NumString;i++)
        {
            for(int j=0;j<NumString;j++)
            {
                Val = strcmp(Vector[i],Vector[j]);

                if(Val > 0)
                {
                   swap = Vector[i];
                   Vector[i]=Vector[j];
                   Vector[j]=swap;
                }
            }
        }

        for(int i=0;i<NumString;i++)
        {
            cout<<Vector[i];
            cout<<endl;
        }
    }
}

或这个

const object1 = {
    a: 'somestring',
    b: 42,
    c: false,
    d: undefined
};
let object2 = Object.assign(
    ...Object.entries(object1).map(obj =>
        obj[1] !== undefined ? { [obj[0]]: obj[1] } : {}
    )
);

或这个

let object2 = Object.assign(
    ...Object.keys(object1).map(key =>
        object1[key] !== undefined ? { [key]: object1[key] } : {}
    )
);

答案 2 :(得分:0)

只需使用ItemLabelGenerator将其克隆到新对象中即可

toString()

对于Object.assign()var userData = { a: 1, b: 2, d: 3 } userDataB = Object.assign({}, userData); console.log(userDataB);值:

undefined

答案 3 :(得分:0)

根据您的用例,这可能对您有用:

const newObj = Object.keys(oldObj).reduce((all,propertyName) => {
  if(oldObj[propertyName] != null){ // change this to your criteria
    all[propertyName] = oldObj[propertyName];
  }
  return all;
},{});