Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将多个数组与文本块匹配,如果找到,则返回值_Javascript_Jquery_Arrays_Underscore.js - Fatal编程技术网

Javascript 将多个数组与文本块匹配,如果找到,则返回值

Javascript 将多个数组与文本块匹配,如果找到,则返回值,javascript,jquery,arrays,underscore.js,Javascript,Jquery,Arrays,Underscore.js,简言之:我得到了3个数组,每个数组都包含一个要与文本块匹配的值列表,如果文本包含3个数组中任何一个的值,它应该返回值,我将如何实现 这是我的3个阵列: var brand = ['giant', 'trek', 'specialized', 'cannondale', 'cervelo', 'pinarello'] var size = ['48', '50', '52', '54', '56', '58'] var year = ['2007', '2008', '2009', '2010

简言之:我得到了3个数组,每个数组都包含一个要与文本块匹配的值列表,如果文本包含3个数组中任何一个的值,它应该返回值,我将如何实现

这是我的3个阵列:

var brand = ['giant', 'trek', 'specialized', 'cannondale', 'cervelo', 'pinarello']

var size = ['48', '50', '52', '54', '56', '58']

var year = ['2007', '2008', '2009', '2010', '2012', '2013']
这是文本,文本中的品牌定位、年份、大小每次都会有所不同

var text = 'specialized Road Expert 2017\nkr.1,150 - Svendborg\n\nspecialized Road Expert str. 44 model 2017\nDenne fantastiske sko passer desværre ikke på mine fødder har været brugt 2 gange. \nKlamper følger ikke med. \nKøbt i Webike Odense 1/3 2017\nNy pris 1.599,-'

我愿意使用纯JS、jquery、下划线、lodash或任何可以完成任务的工具:)

如果要返回每个数组的值,以下代码将完成任务:

var result = [brand, size, year].map(function(arr) {
    return arr.filter(function(word) {
        return text.indexOf(word) > -1;
    });
});
任何founds品牌都将在结果[0]中显示,大小将在结果[1]中显示,以此类推。 如果要将它们合并到单个数组中,请使用以下命令:

var result = [brand, size, year].map(function(arr) {
    return arr.filter(function(word) {
        return text.indexOf(word) > -1;
    });
}).reduce(function(prev, current) {
    return prev.concat(current);
});

假设您不关心数组中的大小写敏感度或重复值(并且您正在使用es6),那么这将起作用:

const res = [...brand,...size,...year].filter(item => text.includes(item));
console.log(res);
var品牌=['giant'、'trek'、'specialized'、'cannondale'、'cervelo'、'pinarello']
变量大小=['48','50','52','54','56','58']
风险值年份=['2007'、'2008'、'2009'、'2010'、'2012'、'2013']
var text='专业道路专家2017\nkr.1150-斯文堡\n\n专业道路专家街44号2017款\n Denne fantastiske sko passer desværre ikke påmine fødder har været brugt 2 gange\nKlamper følger ikke med\nKøbt i Webike Odense 2017年1月3日\nNy pris 1.599,'
var关键字=品牌。concat(规模,年份);
var out=keywords.filter(函数(项){
返回文本。包括(项)
})
控制台。注销)