2016-05-12 68 views
3

我想把一個if語句放在一個對象中,但我不確定它是否可能。如何滿足某些條件時創建只有值的對象?

這是我的目標。

function typed(){ 
    $(".code-animate").typed({ 
     strings: options.typed.strings, 
     typeSpeed: options.typed.typeSpeed, 
     backSpeed: options.typed.backSpeed, 
     contentType: 'text', 
     loop: true, 
     if(options.typed.callback)callback: options.typed.callback // this is what I am trying to do 
    }); 
} 

回答

4

有幾種方式來實現你想要什麼:

三元操作符:

var foo = { 
    callback: someValue ? someValue : null 
} 

OR(或趨向在最簡單的情況下比三元組更優雅):

var foo = { 
    callback: someValue || null 
} 

Post對象創建插入:

var foo = {}; 
if (someValue) foo.callback = someValue; 

注意的是,在兩個第一的情況下,你的對象將永遠有一個所謂的「回調」成員。如果條件不符合,它將有一個null值。在最後一種情況下,如果條件不符合,您的對象將不會有一個名爲「callback」的成員。如果您對此方便,可以使用else聲明強制您的對象具有空值的「回調」。

+0

謝謝你的例子,不幸的是我不能傳遞'null',因爲我無法控制'callback:'接受什麼。我只能通過它期望的值或根本沒有設置它 –

+1

然後第三個例子是你需要的。 – Renan

4

你總是可以在外面拉:

var opts = { 
    strings: options.typed.strings, 
    typeSpeed: options.typed.typeSpeed, 
    backSpeed: options.typed.backSpeed, 
    contentType: 'text', 
    loop: true, 
} 
if(options.typed.callback) 
    opts.callback = options.typed.callback 
$(".code-animate").typed(opts); 
+0

「你可以將它拉到外面「這就是她說的 – Renan

2

你可以先建對象,然後在輸入功能使用:

var params = { 
    strings: options.typed.strings, 
    typeSpeed: options.typed.typeSpeed, 
    backSpeed: options.typed.backSpeed, 
    contentType: 'text', 
    loop: true, 
} 

if(something == true) { params.test = 'qwerty'; } 

$(".code-animate").typed(params); 
2

如果目標是用的,而不是if三元運營商,這是這樣的:

Object.assign(
    { 
     key1: value1, 
     key2: value2, 
    }, 
    cond ? {key3: value3} : {} 
) 
相關問題