Javascript 筛选器数组创建仅具有标题的新数组

Javascript 筛选器数组创建仅具有标题的新数组,javascript,Javascript,使用对象数组: [{... title:'sss'}, {... title:'esd'}, {... title:'ccc'}, {... title:'vvv'}, {... title:'bb'}, {... title:'ess'}] 我希望搜索元素并返回仅包含每个结果标题的数组,类似于: const filtered = data.filter(function(el) { return el.title === te

使用对象数组:

[{... title:'sss'},
{... title:'esd'},
{... title:'ccc'},
{... title:'vvv'},
{... title:'bb'},
{... title:'ess'}]
我希望搜索元素并返回仅包含每个结果标题的数组,类似于:

 const filtered = data.filter(function(el) {
                                return el.title === text;
                            }).map(title => title); 
所以,如果我的搜索文本是es,那么我会得到['esd','ess']

你就快到了

const filtered = data.filter(el => el.title === text).map(el => el.title)
你就快到了

const filtered = data.filter(el => el.title === text).map(el => el.title)
出于性能原因,您可以使用reduce在初始数组上只执行一次迭代,而不是两次迭代筛选和映射:

const filtered = data.reduce((acc, val) => {
    if (val.title === text)
        acc.push(val.title);        
    return acc;
}, []);
注: 没有必要对特定标题进行过滤,然后只返回标题数组。可以肯定的是,您得到的是相同文本的数组。 也许,您可以针对另一个属性进行筛选,或者将另一个属性包含到输出的数组中,只是为了区分结果项

您还可以阅读有关执行此任务的信息。

出于性能原因,您可以使用reduce在初始阵列上仅执行一次迭代,而不是两次迭代筛选和映射:

const filtered = data.reduce((acc, val) => {
    if (val.title === text)
        acc.push(val.title);        
    return acc;
}, []);
const filtered = data.map(obj => obj.title);
注: 没有必要对特定标题进行过滤,然后只返回标题数组。可以肯定的是,您得到的是相同文本的数组。 也许,您可以针对另一个属性进行筛选,或者将另一个属性包含到输出的数组中,只是为了区分结果项

您还可以阅读有关执行此任务的信息。

根据此

const filtered = data.map(obj => obj.title);
因此,如果我的搜索文本是es,我将以['esd','ess'结尾]

你需要

据此,

因此,如果我的搜索文本是es,我将以['esd','ess'结尾]

你需要

您可以使用和:

演示:

常量数据=[{name:'aa',title:'sss'}, {名称:'ee',标题:'esd'}, {名称:'cc',标题:'ccc'}, {name:'vv',title:'vvv'}, {名称:'bb',标题:'bb'}, {姓名:'ss',头衔:'ess'}]; 函数filterDatadata,文本{ 返回data.reduceacc,{title}=>title.indexOftext>-1?acc.pushtitle,acc:acc,[]; } const filtered=filterDatadata“es”; console.logfiltered 您可以使用和:

演示:

常量数据=[{name:'aa',title:'sss'}, {名称:'ee',标题:'esd'}, {名称:'cc',标题:'ccc'}, {name:'vv',title:'vvv'}, {名称:'bb',标题:'bb'}, {姓名:'ss',头衔:'ess'}]; 函数filterDatadata,文本{ 返回data.reduceacc,{title}=>title.indexOftext>-1?acc.pushtitle,acc:acc,[]; } const filtered=filterDatadata“es”;
console.logfiltered 为了分享一些不同的东西,这里有一种方法依赖于使用函数生成器的单个迭代

该方法不需要过滤和映射,只需迭代数组,获取过滤回调函数和映射回调函数,如果过滤函数结果为truthy,则生成映射函数结果

常数数据= [{名称:'aa',标题:'sss'}, {名称:'ee',标题:'esd'}, {名称:'cc',标题:'ccc'}, {name:'vv',title:'vvv'}, {名称:'bb',标题:'bb'}, {名称:'ss',标题:'ess'} ]; 函数*filterAndMaparr、filterCallback、mapCallback{ 对于arr的const项{ 如果filterCallbackitem生成mapCallbackitem; } } const res=[…filterAndMapdata,{title}=>title.indexOf'ss'>-1,{title}=>title];
console.logres 为了分享一些不同的东西,这里有一种方法依赖于使用函数生成器的单个迭代

该方法不需要过滤和映射,只需迭代数组,获取过滤回调函数和映射回调函数,如果过滤函数结果为truthy,则生成映射函数结果

常数数据= [{名称:'aa',标题:'sss'}, {名称:'ee',标题:'esd'}, {名称:'cc',标题:'ccc'}, {name:'vv',title:'vvv'}, {名称:'bb',标题:'bb'}, {名称:'ss',标题:'ess'} ]; 函数*filterAndMaparr、filterCallback、mapCallback{ 对于arr的const项{ 如果filterCallbackitem生成mapCallbackitem; } } const res=[…filterAndMapdata,{title}=>title.indexOf'ss'>-1,{title}=>title];
console.logres;。maptitle=>title;应该是.maptitle=>title.title;。您还可以使用.map{title}=>title。因此,您需要部分搜索,然后使用data.filterl=>el.title.includeText.mapel=>el.title.maptitle=>title;应该是.maptitle=>title.title;。您还可以使用.map{title}=>title。因此,您需要部分搜索,然后使用data.filterl=>el.title.includeText.mapel=>el.title