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

标签 javascript json typescript object

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

我想定义一个对象 userDataB ,其属性 a、b、c 和 d 来自 userData,但仅限于已定义的属性。我知道我可以做这样的事情:

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

但是,有更干净的东西吗?可能来自 es5 或 es6?

最佳答案

这也可能有帮助

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] } : {}
    )
);

或者这个

let object2 = Object.entries(object1).reduce(
    (a, v) => (v[1] !== undefined ? Object.assign(a, { [v[0]]: v[1] }) : a),
    {}
);

关于javascript/typescript - 仅在定义时将项目添加到对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55395937/

相关文章:

javascript - 为什么在 `substr` 已经存在时添加 `substring`?

json - 无法在 JenkinsFile 中按键读取 Json 值

typescript - 使用 Jest 测试 Vuejs 和 TypeScript 会导致错误 "Property ' xxx' does not exist on type 'CombinedVueInstance'

javascript - 当我点击 Angular 中的 <li> 时,如何更改背景颜色?

javascript - 如何启用 Account.users 可编辑或如何删除或编辑 Meteor.users() 的用户?

javascript - 如何动态绑定(bind) Angular 图表的数据

javascript - 使用 grunt 进行 Angular 缩小会导致 'Failed to instantiate module' 错误

java - 解析JSON JAVA中的复杂字符串

javascript - 如何检查Javascript对象的子节点是否包含数组

javascript - 类型 'File' 的参数不可分配给类型 'string' 的参数