我正在寻找一种简洁高效的方法来实现以下目标:
data
中是否存在该属性,如果overriders
中存在该属性,则将其覆盖
fn(data = {}, overriders = {}) {
data = {property: 2};
let { property = data.property } = overriders;
console.log(property); // = 2
}
它可以正常工作
有更好的方法吗?我希望有这样的东西:
fn(data = {}, overriders = {}) {
data = {property: 2};
overriders = {property: 9}
let { property } = data || overriders;
console.log(property); // = 9
}
(我知道它类似于fallback
,但我一直在寻找语法上更接近它的东西)
答案 0 :(得分:2)
您可以使用对象分解。
function changeData( data = {}, overrides = {} ) {
return { ...overrides, ...data };
}
console.log( changeData( { property: 2 }, { property: 9, a: 1, b: 2 }) ) ;
答案 1 :(得分:1)
function fn(data = {property: 2}, overriders = {property: 9}) {
let { property } = {...data, ...overriders};
console.log(property); // = 9
}
fn();