为了账号安全,请及时绑定邮箱和手机立即绑定

如果其值为真,则将字符串值添加到数组

如果其值为真,则将字符串值添加到数组

翻阅古今 2023-03-18 17:53:46
假设我有:const apple = trueconst pear = falseconst coconut = true我想拥有:const activeFruits = ['apple', 'coconut']我怎么能做这样的事情?这是我试过的:const activeFruits = [ apple ? 'apple' : '', pear ? 'pear' : '', coconut ? 'coconut' : '',]然后我必须过滤掉空字符串。它有效,但对我来说似乎不是最聪明的方法。有没有更好的办法?
查看完整描述

3 回答

?
蓝山帝景

TA贡献1843条经验 获得超7个赞

拥有动态方式的一个想法是拥有一个包含变量的对象:


const fruits = {

  apple: true,

  pear: false,

  coconut: true

};


const activeFruit = Object.keys(fruits).filter(key => !!fruits[key]);


console.log(activeFruit)


查看完整回答
反对 回复 2023-03-18
?
跃然一笑

TA贡献1826条经验 获得超6个赞

不确定这是更聪明还是最聪明,但这是一种不同的方法


您可以将所有水果包装到一个对象中,将该对象转换为Object.entries()键值对filter(true使用map


const apple = true

const pear = false

const coconut = true


const obj = {

  apple,

  pear,

  coconut

}


const activeFruits = Object.entries(obj)

  .filter(([_, value]) => value === true)

  .map(([key, _]) => key)


console.log(activeFruits)


查看完整回答
反对 回复 2023-03-18
?
qq_笑_17

TA贡献1818条经验 获得超7个赞

为了回答你的问题,我会这样做:


if (apple) {

    activeFruits.push('apple');

}


if (pear) {

    activeFruits.push('pear');

}


if (coconut) {

    activeFruits.push('coconut');

}

但是,我会质疑您拥有的初始数据结构,并(如果可能)将其更改为:


const fruits = {

    apple: true,

    pear: false,

    coconut: true

};

然后得到这样的答案:


const activeFruits = Object.keys(fruits).filter(key => !!fruits[key]);


查看完整回答
反对 回复 2023-03-18
  • 3 回答
  • 0 关注
  • 68 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信