두 번째 객체 배열을 가지고 있는데, 첫 번째 배열 객체 속성과 두 번째 객체 배열에있는 값을 비교하고 싶습니다. (개체 수준에서).다른 객체의 다중 객체 값 검색 JavaScript
이때 어레이 (1)
[
{
"id": "id1",
"name": "name1"
},
{
"id": "id3",
"name": "name3"
}
]
어레이 (2)
[
{
"id": "id1",
"name": "name1",
"other": "other"
},
{
"id": "id2",
"name": "name2",
"other": "other"
},
{
"id": "id3",
"name": "name3",
"other": "other"
}
]
는 어레이 (2)의 배열이 모두 1 개 값이 존재 진정한 때문에을 반환한다.
하지만 배열 2와 일치하지 않는 속성 값이 하나 있으면 false를 반환합니다.
[
{
"id": "id1",
"name": "name1"
},
{
"id": "id5",
"name": "name3"
}
]
{ "id": "id5", "name": "name3"}이 (가) array2에 없으므로 false를 반환합니다.
내가 루프에 대한 두 개의 비교하기 위해 노력하고있어하지만 난 두 루프의 모든 속성과 value.now을 비교 완료된 후 한 번만 false를 반환하고 싶어, 여기
내가 알고, 내가 노력하고있어 두 개의 루프입니다 이것은 잘못된 것입니다. 값을 찾지 못하면 거짓을 반환 할 것이고 이후 루프에 들어 가지 않기 때문입니다.
for (var i = 0, i < a.length; i++) {
for (var j = 0, j < b.length; j++) {
if (b[j].id === a[i].id && b[j].name === a[i].name) {
console.log('all values found');
return true;
}
console.log('some values does not found');
return false;
}
}
나는 또한 lodash를 사용하고 있습니다.
안녕하세요, 혼란에 죄송합니다. 질문을 업데이트했습니다. – smvd08
루프에서 돌아 가지 마십시오. 변수를 디폴트로 true로 설정하고 요소가 발견되지 않으면 false로 설정하십시오. 그런 다음 끝에 변수를 반환하십시오. – Taplar
['Array.prototype.every()'] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/every)는 여기에서 유용 할 것입니다. – mhodges