2017-06-03 65 views
0

我想創建一個函數,它返回一個對象。有時候這個函數的一個參數是一個空字符串。如果我只有在函數參數不是空字符串的情況下才會生成if語句才能生成對象屬性:city.length > 0 ? 'city': city :它會引發錯誤。任何想法如何正確定義對象內的if聲明?用if語句創建對象

function generateJson(city, state) { 
    return { 
     city.length > 0 ? 'city': city : , 
     state.length > 0 ? 'state': state : 
    }; 
} 

let city = 'NY'; 
let state = ''; 
generateJson(city, state); //output: { 'city': 'NY' } 
+1

你不能做到這一點。對象初始化器語法不適用條件。 – Pointy

回答

1

這將生成一個JSON。要轉換爲JS Object,只需使用JSON.parse

function generateJson(city, state) { 
 
    return JSON.stringify({ 
 
    city: city.length > 0 ? city : undefined, 
 
    state: state.length > 0 ? state: undefined, 
 
    }); 
 
} 
 

 
let city = 'NY'; 
 
let state = ''; 
 
console.log(generateJson(city, state)); //output: { 'city': 'NY' }

1

一個成語是使用Object.assign,採取的事實,它跳過非對象參數的優勢:

function generateJson(city, state) { 
    return Object.assign({}, city && {city}, state && {state}); 
}