问题分配可选值es6合并

时间:2019-03-18 13:24:06

标签: javascript ecmascript-6 const

如何在未定义案例对象属性值中分配可选值。

类似这样的东西。

const { someField } = { y: "Hello" } || { someField: "hello!"}

4 个答案:

答案 0 :(得分:1)

您可以使用destructuring assignments default values。在这种情况下,由于您希望默认值是{ someField: "hello!"}中的值,因此可以通过将其引用为对象来将其指定为默认值。

请参见以下示例:

const obj = { someField: "hello!"};
const {someField = obj['someField']} = { y: "Hello" };
console.log(someField); // hello!

答案 1 :(得分:1)

您还可以使用Object.assign首先合并不同的对象,其中最右边的对象将覆盖左边的对象,然后使用解构从合并的对象中提取属性:

const defaultValues = { y: 'Hello', someField: 'hello!' };
const { someField, y } = Object.assign(defaultValues, { someField: 'bye!' });

console.log(y, someField);

答案 2 :(得分:0)

尝试使用此函数检查空值或未定义的给定值

BEGIN:VCALENDAR
PRODID:-//Test//Intranet//EN
VERSION:2.0
METHOD:PUBLISH
X-MS-OLK-FORCEINSPECTOROPEN:TRUE
BEGIN:VEVENT
CLASS:PUBLIC
CREATED:20190318T142500
DESCRIPTION;ENCODING=QUOTED-PRINTABLE: Mark your calendar for =0D=0A=0D=0AOrganiser: Test Group =0D=0AContact Person: Mickey Mouse =0D=0ALocation: Alaska =0D=0AEmail: test@test.at =0D=0APhone: +1234567890000 =0D=0A=0D=0A
Olala man alatress.
Opla cupla! 
 
 =0D=0A
DTSTART:20190321T170000
RDATE:20190321T170000
RDATE:20190321T220000
DTEND:20190322T210000
RDATE:20190322T170000
RDATE:20190322T210000
DTSTAMP:20190318T125443
LOCATION:Alaska
PRIORITY:1
SEQUENCE:0
SUMMARY:TEST TITLE: 
TRANSP:TRANSPARENT
UID:company-71-74
X-ALT-DESC;FMTTYPE=text/html:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">\n<HTML>\n<HEAD>\n<META NAME="Generator" CONTENT="MS Exchange Server version rmj.rmm.rup.rpr">\n<TITLE></TITLE>\n</HEAD>\n<BODY>\n<!-- Converted from text/plain format -->\n\n<P><FONT SIZE=4>TEST TITLE: </FONT>\n</P>\n\n<P><FONT SIZE=2>Organiser: Test Group </FONT>\n\n<BR><FONT SIZE=2>Contact Person: Mickey Mouse </FONT>\n\n<BR><FONT SIZE=2>Location: Alaska </FONT>\n\n<BR><FONT SIZE=2>Email: test@test.at</FONT>\n\n<BR><FONT SIZE=2>Phone: +1234567890000 </FONT>\n</P>\n\n<FONT SIZE=2><div>
<div>Olala man alatress.</div>
<div>Bitte p&uuml\;nktlich sein!&nbsp\;</div>
<div>&nbsp\;</div>
</div></FONT>\n\n</BODY>\n</HTML>
X-MICROSOFT-CDO-BUSYSTATUS:FREE
X-MICROSOFT-CDO-IMPORTANCE:2
BEGIN:VALARM
TRIGGER:-PT30M
ACTION:DISPLAY
DESCRIPTION:Reminder
END:VALARM
END:VEVENT
END:VCALENDAR

答案 3 :(得分:0)

两种可行的方法最终对我有用:

第一个: const {someField} = Object.assign({someField:“ Hello”},{y:'Hola'});

更好 const {someField} = {someField:{y:“ bla bla”} || {someField:“ Hello”}}