【问题标题】:javascript es6 comma-separated object into string arrayjavascript es6 逗号分隔的对象转换为字符串数组
【发布时间】:2018-02-01 02:48:15
【问题描述】:

我正在使用 React JS 并且有一个多选小部件,我想在其中获取所有选定的值并将每个值放入一个字符串数组中。我能够使用以下代码将所有选定的值放入逗号分隔的对象中:

 [...event.target.options].filter(o => o.selected).map(o => o.value)

这会产生如下输出:value1, value3

我可以像这样为每个值添加单引号:

 [...event.target.options].filter(o => o.selected).map(o => `'${o.value}`)

这会产生以下输出:'value1', 'value3'

但我不知道如何将结果放入数组中——我想要这样的东西:

['value1','value3']

关于如何使用 JS,最好是 ES6 的任何想法?

【问题讨论】:

  • 能否提供event.target.options的数据示例
  • 但是.map() 不应该已经返回一个数组了吗?
  • map() 返回一个数组。你到底想做什么?

标签: javascript reactjs ecmascript-6


【解决方案1】:

您的代码似乎没有任何问题,导致意外结果的代码肯定发生在其他地方。也许您在某处的阵列上使用.join

document.querySelector("select").addEventListener(
  "change",
  e=>
    console.log(
       [...event.target.options]
      .filter(o => o.selected)
      .map(o => o.value)
    )
);
<select multiple>
  <option value="1">1</option>
  <option value="2">2</option>
  <option value="3">3</option>
  <option value="4">4</option>
  <option value="5">5</option>
</seclect>

【讨论】:

    【解决方案2】:

    看起来它已经是一个数组了?

    var event = {
      target: {
        options: [
          {
            value: 'value1',
            selected: true
          },
          {
            value: 'value2',
            selected: true
          },
          {
            value: 'value3',
            selected: false
          },
        ]
        
      }
    };
    
    var output = [...event.target.options].filter(o => o.selected).map(o => `${o.value}`)
    console.log(output);
    console.log(Array.isArray(output));

    【讨论】:

    • 由于某种原因,我尝试这样做时对我不起作用,只返回'value1','value3'。还创建了一个显式数组并尝试推送值——同样的问题。
    猜你喜欢
    • 1970-01-01
    • 2021-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多