Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/373.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_Loops_Multidimensional Array - Fatal编程技术网

Javascript 用一维数组过滤多维数组

Javascript 用一维数组过滤多维数组,javascript,jquery,arrays,loops,multidimensional-array,Javascript,Jquery,Arrays,Loops,Multidimensional Array,我在页面上有一组复选框,单击这些复选框时,会创建一个值数组(allVals),这些值会随着复选框的选中/取消选中而改变(字符串输出也是一个选项)。我还有另一个多维数组(recordSet),我想根据选中的值(allVals)对其进行过滤(在下面的示例中:recordSet[I][5]),然后返回一个只包含匹配索引及其值的新多维数组。在这种情况下,它将只返回第一个记录集[0],因为其中包含“cat”。每次选中/取消选中复选框时,记录集将再次过滤,新创建的多维数组将更新 我已经研究了underlin

我在页面上有一组复选框,单击这些复选框时,会创建一个值数组(allVals),这些值会随着复选框的选中/取消选中而改变(字符串输出也是一个选项)。我还有另一个多维数组(recordSet),我想根据选中的值(allVals)对其进行过滤(在下面的示例中:recordSet[I][5]),然后返回一个只包含匹配索引及其值的新多维数组。在这种情况下,它将只返回第一个记录集[0],因为其中包含“cat”。每次选中/取消选中复选框时,记录集将再次过滤,新创建的多维数组将更新

我已经研究了underline.js,我也在页面上使用它,但不确定如何构造过滤器和循环。非常感谢您的任何帮助,为我指明正确的方向——欢迎您提出其他建议

allVals = ["cat", "dog"] 
recordSet = 0: Array[6]
               0: "somevalue"
               1: "somevalue"
               2: "somevalue"
               3: "somevalue"
               4: "somevalue"
               5: "Cat;Monkey;Elephant;Rooster"
             length: 6

            1: Array[6]
               0: "somevalue"
               1: "somevalue"
               2: "somevalue"
               3: "somevalue"
               4: "somevalue"
               5: "Giraffe;Turtle;Rabbit;Snake"
             length: 6

function updateSubTopics() {
    var allVals = [];

    $('.subCheck').each(function() {
        if  (this.checked){
            allVals.push($(this).val());
        }

    });

$(function() {
    $('.subCheck').click(updateSubTopics);
        updateSubTopics();
});
我想你是在找下面这样的东西。(这个例子是一个概念证明,肯定有一种更有效的计算方法。)


这看起来不错,但我只需要查询记录集[I][5],而这似乎可以查询数组中的所有值。此外,不会返回原始多维结构。我无法引用每个数组中需要的任何其他值(这些“SomeValue”在接下来的步骤中很重要。您提到了一个更有效的解决方案,我很想听听您的建议。谢谢!
var animals = ['cat', 'dog'];

var values = [
    ['chicken;cat;', 'foobar'], 
    ['pig;rat;', 'dog;lizard;']
];

_.flatten(_.map(animals, function (animal) {
    return _.flatten(_.map(values, function (value) {
        return _.flatten(_.reject(value, function (x) {
            return x.indexOf(animal) === -1;
        }));
    }));
}));

// ["chicken;cat;", "dog;lizard;"]