有类似'在于'js中的运算符,正如我们所拥有的'$在'在猫鼬/猫鼬中

Is there anything like 'lies in' operator in js, as we have '$in' in mongoose/mongo

本文关键字:拥有 我们 运算符 在于 js      更新时间:2024-05-09

我想在js 中实现这样的函数

            function(arrayOfObjects, arrayOfValues, property) {
/*here i want to return all the objects of 'arrayOfObjects' 
        which satisfies the following condition 
        (index is the iterative index of array 'arrayOfObjects')
               arrayOfObjects[index][property] is equivalent to any of
    the values that lies in arrayOfValues */
            };

示例:

arrayOfObjects = [{ a: 1, b: 2 }, { a: 3, b:4 }, { a: 1, b :3 }];
arrayOfValues = [ 2, 3 ];
function(arrayOfObjects, arrayOfValues, 'b')

return [{ a: 1, b: 2 }, { a: 1, b :3 }] 是否

arrayOfObjects.filter(function (elem) {
    return elem.hasOwnProperty(property)
        && -1 !== arrayOfValues.indexOf(elem[property]);
});

如果您需要IE8支持:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter#Compatibility

您可以使用Array.prototype.filter功能:

var a1 = [{ a: 1, b: 2 }, { a: 3, b:4 }, { a: 1, b :3 }];
var a2 = [2, 3];
var filtered = a1.filter(function(item) {
  return a2.indexOf(item.b) != -1;
});

不,这是一个太复杂的问题,不能在JS中内置一些运算符或函数。

你必须使用一些循环来遍历元素。

function(arrayOfObjects, arrayOfValues, property) {
    var result = [];
    for (var i = 0; i < arrayOfObjects; i++) {
        for (var j = 0; j < arrayOfValues; j++) {
            if (arrayOfObjects[i][property] === arrayOfValues[j]) {
                result.push(arrayOfObjects[i]);
                continue; //object already added, go to next one
            }
        }
    }
    return result;
};
function fun1(arrayOfObjects, arrayOfValues, property) {
    var result = new Array();
    for (var obj in arrayOfObjects){
        if (arrayOfObjects[obj].hasOwnProperty(property) && 
            arrayOfObjects[obj][property] == arrayOfValues[property]){
            result.push(arrayOfObjects[obj]);
        }
    }
    return result;
}
var arrayOfObjects = [{ a: 1, b: 2 }, { a: 3, b:4 }, { a: 1, b :3 }];
var arrayOfValues  = new Array();
arrayOfValues['a'] = 2;
arrayOfValues['b'] = 3;
console.log(fun1(arrayOfObjects , arrayOfValues , 'b'));

您的arrayOfValues应该是一个"关联数组"或键值对对象,该对象使用键来匹配属性。这可能更符合你的逻辑。

相关文章: