【问题标题】:Returning a single value from a filter从过滤器返回单个值
【发布时间】:2018-08-08 13:04:26
【问题描述】:

我正在尝试从返回大对象的过滤器中返回单个值。

return data.filter(subject => subject.id === 1)
   .map((subject) => {
   return subject.total.toString();
    });

我尝试过 toString、JSON.parse 和其他一些方法,但总是将其作为单个数组值获取。

[112]

或数组内的字符串

[“112”]

但不是单个返回值

112

map是不是方法不对?我如何返回一个纯整数或字符串呢?

【问题讨论】:

标签: javascript arrays filter


【解决方案1】:

使用find,而不是返回具有过滤值的数组的filter:

const subject = data.find(subject => subject.id === 1);
return subject.total.toString();

或更短:

return data.find(subject => subject.id === 1).total.toString();

【讨论】:

    【解决方案2】:

    您只需要选择第一个元素。这应该足够了..

    return data.filter(subject => subject.id === 1)[0].total+""
    

    【讨论】:

    • find 的性能也更高,因为它一旦找到匹配项就会停止。过滤器将继续并处理整个数组。
    【解决方案3】:

    怎么样

    return data
       .filter(subject => subject.id === 1)
       .map(subject => subject.total.toString())[0] // Take the first element of the array :)
    

    Array.map 返回一个数组。如果您的初始数组包含一个元素,则输出数组也将包含一个元素。用[0]解压即可。

    或者。 find() 返回一个对象:

    return data.find(subject => subject.id === 1).total.toString()
    

    【讨论】:

      【解决方案4】:

      过滤器总是会返回一个数组来获取第一个元素使用pop

      return data.filter(subject => subject.id === 1)
         .map((subject) => {
         return subject.total;
          }).pop();
      

      【讨论】:

        猜你喜欢
        • 2020-03-14
        • 1970-01-01
        • 1970-01-01
        • 2017-12-15
        • 2016-09-19
        • 2019-04-08
        • 1970-01-01
        • 2018-02-12
        • 1970-01-01
        相关资源
        最近更新 更多