let arr = [
{name: '张三',sex:男},
{name: '李四',sex:女},
{name: '王五',sex:女},
{name: '张三',sex:男},
],
这个数组里可能会有很多数据。
我需要判断其中两个对象中name属性值和sex属性值是否相同,只要其中两个属性值都相同,就返回true,否则返回false。(并不是只跟第一个或第二个相比较,是所有的对象都要相互比较)
let arr = [
{name: '张三',sex:男},
{name: '李四',sex:女},
{name: '王五',sex:女},
{name: '张三',sex:男},
],
这个数组里可能会有很多数据。
我需要判断其中两个对象中name属性值和sex属性值是否相同,只要其中两个属性值都相同,就返回true,否则返回false。(并不是只跟第一个或第二个相比较,是所有的对象都要相互比较)
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')
}
}
}
试一下,将对象转成字符串对比
嗯? 没理解错的话这道题正解应该同时满足以下两个条件吧;
1、返回值应该为 Boolean
值 true or false
,
2、只要 属性值 name
和 sex
值相同就返回 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])的值吧。
所以此题的正解应该是 @扬帆启航
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)
遍历数组判断相邻两项是否相等
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] )
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
3 回答5.1k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决
楼下@Justin,说的是,顺序不一样也不对。
