如果对象数组中两个不同对象的两个键在 JavaScript 中相同,则通过其键查找对象

Find an object by its key, if two keys of two different objects within an array of object are identical in JavaScript

这是一个对象数组:

var array = [{ first: "Romeo", last: "Capulet" }, { first: "Mercutio", last: null }, { first: "Tybalt", last: "Capulet" }]

这是一个对象:

var obj = {last: "Capulet}

如果两个对象的两个键相同,则尝试通过其键查找对象!如果此对象 obj 通过其属性和值之一包含在上述对象数组中,则它假设 return 上述对象数组的整个对象。例如,在这种情况下,它应该 return 一个包含两个对象的数组,因为两个对象包含 属性 “last”,其值为“Capulet”!

[{ first: "Romeo", last: "Capulet" }, { first: "Tybalt", last: "Capulet" }]

这是我的代码:

function objectFindByKey(array, obj){
    var array1 = [];
    for(var i = 0; i<array.length;i++){
        array1.push(Object.entries(array[i]));
        var a2 = JSON.stringify(array1);
        var a3 = JSON.stringify(obj);
        if(a2.includes(a3)){
            return array1[i];
        };
    };
};

为了能够比较两个对象,我使用了 JSON.stringify() 方法,因为在那种情况下,如果我对对象数组进行字符串化。不幸的是,它 return 最后是“未定义”!

您可以遍历对象键并删除 属性 如果条件匹配:

var obj = {a: 1, b: 2, c: 3, d: 4, e: 5, f: 6, g: 7, h: 8, i: 9, j: 10};
Object.keys(obj).forEach(function(k){
  if(obj[k]<5){
    delete obj[k];
  }
});

console.log(obj);

您可以过滤条目。

const
    object = { a: 1, b: 2, c: 3, d: 4, e: 5, f: 6, g: 7, h: 8, i: 9, j: 10 };
    result = Object.fromEntries(Object
        .entries(object)
        .filter(([_, v])=> v >= 5)
    );

console.log(result);