sil*_*513 5 javascript object ecmascript-6
我正在尝试找到一种创建对象的方法,在创建时它会忽略未定义的值.
在下面的示例中,变量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'}
Run Code Online (Sandbox Code Playgroud)
实际记录的内容是:
{
catName: 'purry',
dogName: undefined,
hamsterName: undefined,
rabbitName: 'floppy'
}
Run Code Online (Sandbox Code Playgroud)
不要使用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
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3794 次 |
| 最近记录: |