2017-06-03 86 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}); 
}