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

Posted

技术标签:

【中文标题】如果对象数组中两个不同对象的两个键在JavaScript中相同,则通过键查找对象[重复]【英文标题】:Find an object by its key, if two keys of two different objects within an array of object are identical in JavaScript [duplicate] 【发布时间】:2021-05-23 06:04:19 【问题描述】:

这是一个对象数组:

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

这是一个对象:

var obj = last: "Capulet

如果两个对象的两个键相同,则尝试通过其键查找对象!如果此对象 obj 通过其属性和值之一包含在上述对象数组中,则假设返回上述对象数组的整个对象。例如,在这种情况下,它应该返回一个包含两个对象的数组,因为两个对象包含属性“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() 方法,因为在这种情况下,如果我对对象数组进行字符串化。不幸的是,它最后返回“未定义”!

【问题讨论】:

你想要一个新对象吗?你试过了吗? 是的,我想要新对象! 【参考方案1】:

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

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);

【讨论】:

OP 后来澄清他们想要一个新对象。【参考方案2】:

您可以过滤条目。

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);

【讨论】:

以上是关于如果对象数组中两个不同对象的两个键在JavaScript中相同,则通过键查找对象[重复]的主要内容,如果未能解决你的问题,请参考以下文章

从 JSON 响应中解析两个不同对象的数组

如何从两个不同的数组中找到共同的对象并打印另一个对象?

在 var 数组中存储两个不同的对象?

如何将不同数组中的两个匹配对象合并为一个对象?

Javascript中比较两个无序对象数组的自定义实现

两个不同对象数组中唯一值的计数