条件传播元素

新手上路,请多包涵
const cond = false

const extraInfo = [
  {
    a: 11,
    b: 25
  },
  {
    a: 12,
    b: 34
  },
  {
    a: 1,
    c: 99
  }
]

const userInfo = [
  {
    z: 8
  },
  {
    z: 10
  },
  ...(cond && extraInfo)
]

cond 为真时,我需要额外信息和用户信息。

cond 为 false 时,只需要 userInfo。

问题是当 cond 为假时,我明白了

类型错误:(中间值)(中间值)(中间值)[Symbol.iterator] 不是函数

我的理解是我不允许使用布尔值作为传播元素,在这种情况下 ...false

但是 ...( cond ? extraInfo : {} ) 似乎也不起作用。

到底是怎么回事?

原文由 Liren Yeo 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 222
2 个回答

就去做吧

...(cond ? extraInfo : [])

真实演示

 var cond = true;

var extraInfo = [
  {
    a: 11,
    b: 25
  },
  {
    a: 12,
    b: 34
  },
  {
    a: 1,
    c: 99
  }
];

var userInfo = [
  {
    z: 8
  },
  {
    z: 10
  },
  ...(cond ? extraInfo : [])
];

console.log( userInfo );

假的演示

 var cond = false;

var extraInfo = [
  {
    a: 11,
    b: 25
  },
  {
    a: 12,
    b: 34
  },
  {
    a: 1,
    c: 99
  }
];

var userInfo = [
  {
    z: 8
  },
  {
    z: 10
  },
  ...(cond ? extraInfo : [])
];

console.log( userInfo );

原文由 gurvinder372 发布,翻译遵循 CC BY-SA 3.0 许可协议

有条件地将实体传播到 对象

console.log(
  {
    name: 'Alex',
    age: 19,
    ...(true && { city: 'Kyiv' }),
    ...(false && { country: 'Ukraine' })
  }
)

// { name: 'Alex', age: 19, city: 'Kyiv' }

有条件地将实体传播到 数组


console.log(
  [
    'Dan',
    'Alex',
    ...(true ? ['Robin'] : [])
  ]
)

// [ 'Dan', 'Alex', 'Robin' ]

原文由 Purkhalo Alex 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题