js 判断一个数组中所有对象的其中两个属性值是否相同

发布于 2022-09-30 23:06:50 字数 292 浏览 15 评论 0

let arr = [
       {name: '张三',sex:男},
       {name: '李四',sex:女},
       {name: '王五',sex:女},
       {name: '张三',sex:男},
          ],

这个数组里可能会有很多数据。
我需要判断其中两个对象中name属性值和sex属性值是否相同,只要其中两个属性值都相同,就返回true,否则返回false。(并不是只跟第一个或第二个相比较,是所有的对象都要相互比较)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

‘画卷フ 2022-10-07 23:06:50

image.png

let arr = [
{name: '张三',sex:'男'},
{name: '李四',sex:'女'},
{name: '王五',sex:'女'},
{name: '张三',sex:'男'},
]
arr.some((item,index,array)=>array.slice(index+1).find(other=>item.name == other.name && item.sex == other.sex));

// true

楼下@Justin,说的是,顺序不一样也不对。
image.png

小兔几 2022-10-07 23:06:50
    for(let obj in arr){
        var str= JSON.stringify(obj);
        for(let obj1  in arr){
            var str1= JSON.stringify(obj1);
            if (str==str1){
                alert('yes')
            }else {
                alert('no')
            }
        }

    }

试一下,将对象转成字符串对比

盛夏已如深秋| 2022-10-07 23:06:50
new Set(arr.map(item => JSON.stringify(item))).size !== arr.length
夏见 2022-10-07 23:06:50

嗯? 没理解错的话这道题正解应该同时满足以下两个条件吧;

1、返回值应该为 Booleantrue or false
2、只要 属性值 namesex 值相同就返回 true

且不说采纳答案没有满足第一个条件,第二个条件也同样不满足。

假如 arr = [{
            name: '张三',
            sex: '男'
        },
        {
            name: '李四',
            sex: '女'
        },
        {
            name: '王五',
            sex: '女'
        },
        {
            name: '张三',
            sex: '男',
            age: 10
        },
    ];

按题意此时也应该是返回的 true 吧,
arr[0]与arr[3] name和sex值相同啊,
而不应该返回 JSON.stringify(arr[0]) === JSON.stringify(arr[3])的值吧。

所以此题的正解应该是 @扬帆启航

表情可笑 2022-10-07 23:06:50
let arr = [
       {name: '张三',sex:'男'},
       {name: '李四',sex:'女'},
       {name: '王五',sex:'女'},
       {name: '张三',sex:'男'},
]

let tmp = null

const bool = arr.every(c => {
    if (tmp === null) {
        tmp = c
        return true;
    } else {
        return tmp.name === c.name && tmp.sex === c.sex
    }
})

console.log(bool)
心凉 2022-10-07 23:06:50
  1. 把数组每一项转化为字符串
  2. 对处理后的数组排序,这样如果数组里有相同项是会相邻的
  3. 遍历数组判断相邻两项是否相等

    var arr = [
    {name: '张三',sex:'男'},
    {name: '李四',sex:'女'},
    {name: '王五',sex:'女'},
    {name: '张三',sex:'女'}
    ]
    arr = arr.map(obj => JSON.stringify(obj)).sort()
    arr.some((v, i) => v === arr[i+1] )
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文