Javascript 从筛选器返回单个值

Javascript 从筛选器返回单个值,javascript,arrays,filter,Javascript,Arrays,Filter,我试图从返回大对象的筛选器中返回单个值 return data.filter(subject => subject.id === 1) .map((subject) => { return subject.total.toString(); }); 我尝试了toString、JSON.parse和其他一些方法,但总是将其作为单个数组值 [112] 或者数组中的字符串 [“112”] 但没有一个返回值 112 map是错误的方法吗?如何返回纯整数或字符串?使用fi

我试图从返回大对象的筛选器中返回单个值

return data.filter(subject => subject.id === 1)
   .map((subject) => {
   return subject.total.toString();
    });
我尝试了toString、JSON.parse和其他一些方法,但总是将其作为单个数组值

[112]

或者数组中的字符串

[“112”]

但没有一个返回值

112


map是错误的方法吗?如何返回纯整数或字符串?

使用
find
,而不是
filter
返回带有筛选值的数组:

const subject = data.find(subject => subject.id === 1);
return subject.total.toString();
或更短:

return data.find(subject => subject.id === 1).total.toString();
那怎么办

return data
   .filter(subject => subject.id === 1)
   .map(subject => subject.total.toString())[0] // Take the first element of the array :)
Array.map
返回一个数组。如果初始数组包含一个元素,则输出数组也将包含一个元素。只需使用
[0]
将其解压缩即可

或者<代码>查找()返回一个对象:

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

过滤器将始终返回一个数组以获取第一个元素use
pop

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

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

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

filter
函数的docs表示,它的返回类型是
array
find
也更有效,因为它一找到匹配项就停止。筛选器仍将继续并处理整个数组。这应该是可接受的答案