假设我有一个对象调用userData = {..}
,我想从userData定义一个具有属性a,b,c和d的对象userDataB,但仅定义那些属性。我知道我可以做这样的事情:
userDataB = {}
if(userData.a){userDataB.a = a};
if(userData.b){userDataB.b = b};
...
但是,有清洁的东西吗?来自es5或es6的Mayber吗?
答案 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;
},{});