Javascript 带两个数组的jQuery grep?

Javascript 带两个数组的jQuery grep?,javascript,jquery,Javascript,Jquery,这是我的语法,还是我试图做的完全是错误的 我有两个数组,由用户选择的任何属性填充。然后我尝试在json文件上使用$.grep()来选择与搜索匹配的枕头。因此,在下面的例子中,我试图找到所有填充物“向下”且价格“较低”的枕头 我是一个顽强的谷歌人,但这让我感到困惑。非常感谢您提供的任何线索。这应该对您有用: var activevars = ['fill', 'price']; var activeattributes = ['down', 'low']; var pillowSelection

这是我的语法,还是我试图做的完全是错误的

我有两个数组,由用户选择的任何属性填充。然后我尝试在json文件上使用$.grep()来选择与搜索匹配的枕头。因此,在下面的例子中,我试图找到所有填充物“向下”且价格“较低”的枕头


我是一个顽强的谷歌人,但这让我感到困惑。非常感谢您提供的任何线索。

这应该对您有用:

var activevars = ['fill', 'price'];
var activeattributes = ['down', 'low'];
var pillowSelection = $.grep(data.pillow, function(a) {
    var ret = false;
    for (var i = 0, il = activevars.length; i < il; i++) {
        if ($.inArray(a[activevars[i]], activeattributes) > -1) {
            ret = true;
        }
    }
    return ret;
});
var-activevars=['fill','price'];
var-activeattributes=['down','low'];
var pillowSelection=$.grep(data.pillowSelection,函数(a){
var-ret=false;
for(var i=0,il=activevars.length;i-1){
ret=真;
}
}
返回ret;
});

如果我理解正确,
activevars
activeattributes
是并行数组,也就是说
activevars[0]
activeattributes[0]
搭配,
activevars[1]
activeattributes[1]
搭配,等等

所以你可以这样做:

pillowSelection = $.grep(data.pillow, function(a) {
    for (var i = 0; i < activevars.length; i++) {
        if (a[activevars[i]] !== activeattributes[i]) {
            return false;
        }
    }
    return true;
});
然后检查是否是每个枕头的一部分:

pillowSelection = $.grep(data.pillow, function(a) {
    return sub_dictionary(filter, a);
});

你的问题似乎有些遗漏,但我会尽量这样回答:

如果您有一组枕头对象:

var pillows = [
    { fill: 'down', price: 'low' },
    { fill: 'cheese', price: 'middle' },
    { fill: 'water', price: 'high' },
    { fill: 'air', price: 'omg-too-much' }
];
要获得与您的条件匹配的新枕头阵列,请以这种方式进行查询,这样会更容易:

var query = { fill: 'down', price: 'low' };

var matches = pillows.filter(function (pillow) {
    return pillow.fill === query.fill && pillow.price === query.price;
});

这就是我解决问题的方法:

var array1 = [1,2,3,4,5],
    array2 = [5,4,3,2,1,6];

function compareArrays(arr1, arr2) {
    return $(arr1).not(arr2).length == 0
};
然后在for each循环中运行此命令:


你的问题不够清楚。data.pillow数据结构是什么样子的?grep回调函数中的a是数组元素,而不是数组,因此不能调用[activevars]。此外,还必须同时检查键和值。也许你不仅有“低”的价格,还有“低”的身高。
var query = { fill: 'down', price: 'low' };

var matches = pillows.filter(function (pillow) {
    return pillow.fill === query.fill && pillow.price === query.price;
});
var array1 = [1,2,3,4,5],
    array2 = [5,4,3,2,1,6];

function compareArrays(arr1, arr2) {
    return $(arr1).not(arr2).length == 0
};
var hasValues = compareArrays(array1, array2) ? 'true' : 'false');

if(hasValues == true){
   // show content
}else{
   // Hide content
}