用if语句创建对象

时间:2017-06-03 12:25:27

标签: javascript object

我想创建一个返回对象的函数。有时这个函数的一个参数是一个空字符串。如果我只在函数参数不是空字符串时才使用if语句生成对象属性:city.length > 0 ? 'city': city :它会抛出错误。知道如何正确定义对象内的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' }

2 个答案:

答案 0 :(得分:1)

这将生成一个JSON。要转换为JS对象,只需使用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 :(得分:1)

一个成语是使用Object.assign,利用它跳过非对象参数的事实:

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