当前位置: 首页 > 知识库问答 >
问题:

根据定义的属性,创建具有可选属性的JS对象[重复]

杜思远
2023-03-14

我有一个函数,它将调用外部资源(例如REST)并根据结果返回JSON对象。

例如,如果我发送一个POST并且它可以工作,我需要对象是:

{ 
    code: 201, 
    id: <new_id_added> 
}

但是当它由于某种原因失败时,我不想要id(因为它将是未定义的)。类似于:

{ 
    code: 400
}

所以只有一个处理方法:

response = { 
    code: result.code,
    id: result.id 
}

当一切正常时,它会工作,但当它失败时,它会呈现:

{ 
    code: 400, 
    id: undefined
}

有没有办法使“id”成为可选的,这取决于它是否被定义?类似于:

response = { 
    code: result.code,
    id?: result.id
}

那么在“未定义”中,它将被忽略?我知道我可以只取这个对象,然后运行一个过滤器来删除未定义的属性,但我认为这太过分了,因为大多数时候响应都会成功

共有2个答案

孙梓
2023-03-14

您可以使用对象。通过检查id分配

response = Object.assign({ code: result.code }, 'id' in result && { id: result.id });
阮疏珂
2023-03-14

可以使用扩展运算符

response = {...result}

这将创建一个新对象,该对象包含存在于结果对象中的值。

更新

//--------------------------------------------
// First Example
//--------------------------------------------

// response can have other properties as well
var response = {
  foo: 'foo',
  bar: 'bar'

}

// Has no ID
var resultWithoutID = {
  code: 400
}


response = {...response, ...resultWithoutID};
console.log('Response without ID: ', response);

//--------------------------------------------
// Second Example
//--------------------------------------------

response = {
  foo: 'foo',
  bar: 'bar'

}

// Has ID
var resultWithID = {
  code: 400,
  id: 123
}


response = {...response, ...resultWithID};
console.log('Response with ID: ', response);
 类似资料:
  • 本文向大家介绍aurelia 创建具有可绑定属性的自定义元素,包括了aurelia 创建具有可绑定属性的自定义元素的使用技巧和注意事项,需要的朋友参考一下 示例 创建具有可绑定属性的自定义元素非常简单。如果要创建一个接受一个或多个插件可以使用的值的元素,则需要使用@bindable装饰器和语法。 在下面,我们正在创建一个自定义元素,该元素接受一系列水果并显示它们。 示例: my-element.j

  • 问题内容: 我是Java的新手,并且开始使用Java 。我想做的是为学生创建一个。每个学生都有与其相关的不同属性()。我试图弄清楚如何使用此属性添加新的学生对象。这是我所拥有的: 问题答案: 您需要的是以下内容:

  • 问题内容: 用Javascript将是: 但是Python中相同的语法会创建一个字典,那不是我想要的 问题答案: 有两种功能用途。

  • 问题内容: 我在学习基本的Java课程,但遇到一个问题:仅在将有效参数传递给构造函数后,才如何创建对象? 验证完成后,我应该做一个替代类并从那里调用构造函数吗? 还是应该/应该在类中使用静态方法进行验证? 在这种情况下,最佳做法是什么? 问题答案: 标准做法是验证构造函数中的参数。例如: 旁注:要验证参数不为null(这很常见),可以使用: 更新 答复您对社会保险号的特定评论。一种方法是向类添加方

  • 到目前为止,我已经学会了: 1) 对于循环,我可以使用它来迭代对象中的索引,例如具有数字索引键的数组。 2) 的中,循环为我提供了iterable和custom属性以及继承属性。但是,它忽略了值未定义的属性。 对于例如。 将省略索引,因为它的值是。 但是,它将迭代,和。 3) 的对值而不是键进行迭代。不同之处在于,它只迭代所有iterable属性,忽略了自定义属性,也忽略了从原型链继承的属性。但是

  • 我正在努力处理一个简单的RxJs查询,但我似乎无法理解。如果观察对象被包装在一个对象中,我似乎不知道如何合并它们。如果我直接从flatMap返回Observable,那么这个示例可以正常工作,但我还需要在输出中输入名称。我怎样才能做到这一点? 我正在使用RxJS 5.0.0-beta.2 基本数据结构: RxJs函数: 预期结果: 实际结果: