Javascript 如何使用下划线对以下数组进行排序?
我想使用下划线按array1过滤数组,并得到下面的答案。需要明确的是,如果数组中对象的key1中的任何元素都是数组1中句子的一部分,那么我希望将该元素保留在数组中。例如:Javascript 如何使用下划线对以下数组进行排序?,javascript,arrays,regex,underscore.js,Javascript,Arrays,Regex,Underscore.js,我想使用下划线按array1过滤数组,并得到下面的答案。需要明确的是,如果数组中对象的key1中的任何元素都是数组1中句子的一部分,那么我希望将该元素保留在数组中。例如: var array = [{key: "don't matter", key1: ["Bob doesn't", "Joe lives", "named John"]}, {key: "still don't matter", key1: ["Jane might", "Jill lives", "Jennifer can'
var array = [{key: "don't matter", key1: ["Bob doesn't", "Joe lives", "named John"]},
{key: "still don't matter", key1: ["Jane might", "Jill lives", "Jennifer can't"]}]
var array1 = ["Someone named Bob lives here", "Someone named Joe lives
here", "Someone named Lisa lives here"];
var answer = [{key: "don't matter", key1: ["Bob doesn't", "Joe lives", "named John"]}];
现在我要说的是:
var answerTest = _.filter(array, function(n){if(_.intersection(n.key1, array1))}); //this is not working though
var answerTest2 = _.filter(array, function(n){return RegExp(n.key1).test(????)})
我认为answerTest2是一个更好的方法,但我不知道从那里可以走到哪里
var answer = _.filter(array, function(n){
if (_.some(n.key1, function(j){
return _.find(array1, function(p){
return new RegExp(j).test(p)})})) {
return n}});
这个问题的目的是能够通过对象键之一的字符串值以及它与字符串数组中的元素的部分匹配来过滤对象数组。据我所知,没有RegExp是做不到的。我认为这是Javascript新手需要了解的重要一点,特别是对于那些可能不正常使用下划线或lodash执行服务器端Javascript的人。你是指排序还是筛选?@torazaburo,我在想筛选。我想要的答案是,数组中的choice元素与数组1中的元素有特定的重叠。否则,我不确定我是否理解你的问题。虽然这个代码片段可以解决这个问题,但确实有助于提高你文章的质量。请记住,您将在将来回答读者的问题,这些人可能不知道您的代码建议的原因-