如何使用下划线对以下数组进行排序?

时间:2016-03-04 03:24:53

标签: javascript arrays regex underscore.js

我想使用下划线按 array1 过滤数组并获取下面的回答。需要说明的是,如果 array 中对象的key1中的任何元素都是 array1 中句子的一部分,那么我想将该元素保留在数组< / strong>即可。例如:

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是一种更好的方法,但我不知道从那里开始。

1 个答案:

答案 0 :(得分:0)

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的正常路径的人。