我正在尝试找到一种创建对象的方法,在创建对象时它会忽略未定义的值。
在下面的示例中,变量 someNames 在创建对象时具有未知内容。
const someNames = {
catName: 'purry',
rabbitName: 'floppy',
turtleName: 'shelly'
};
const { catName, dogName, hamsterName, rabbitName } = someNames;
const animalNames = Object.assign({}, {
catName,
dogName,
hamsterName,
rabbitName
});
console.log(animalNames);// {catName: 'purry', rabbitName: 'floppy'}
实际记录的是这样的:
{
catName: 'purry',
dogName: undefined,
hamsterName: undefined,
rabbitName: 'floppy'
}
最佳答案
不要使用 Object.assign
它复制所有自己的可枚举属性,无论它们的值如何,但您自己的自定义函数可以过滤掉 undefined
属性:
function assignDefined(target, ...sources) {
for (const source of sources) {
for (const key of Object.keys(source)) {
const val = source[key];
if (val !== undefined) {
target[key] = val;
}
}
}
return target;
}
…
const animalNames = assignDefined({}, {
catName,
dogName,
hamsterName,
rabbitName
});
关于javascript - 有没有办法使用变量创建对象并忽略 undefined variable ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39513815/