आपके पास एक समस्या वह स्थान है जहां आप isFriend के परिणाम को लॉग करने का प्रयास कर रहे हैं। आपके द्वारा खोज लूप में प्रवेश करते ही isFriend को असत्य पर सेट करने के ठीक बाद यह वर्तमान में लॉग किया जा रहा है।
उस कथन को लूप के लिए आंतरिक के ठीक बाद स्थानांतरित करने की आवश्यकता है।
सभी इनपुट के बिना, यह अनुमान लगाना बहुत मुश्किल हो जाता है कि समस्या कहाँ हो सकती है।
इनपुट के रूप में निम्नलिखित का उपयोग करना (क्या आप JSON प्रारूप में वास्तविक इनपुट प्रदान कर सकते हैं?):
var users = [
{
lastName: 'Smith',
'_id': "51ee2017c2023cc816000001"
},
{
lastName: 'Jones',
'_id': "51ee2017c2023cc816000002"
},
{
lastName: 'Macks',
'_id': "51ee2017c2023cc816000003"
}
];
var signedInUser = {
friendRequest: [{
"friendId": "51ee2017c2023cc816000002",
"read": 0,
"date_requested": "2013-07-23T06:29:39.021Z"
}, {
"friendId": "51ee203cc2023cc816000003",
"read": 0,
"date_requested": "2013-07-23T06:42:37.872Z"
}]
};
function test(err, signedInUser) {
console.log("\nsignedInUser.friendRequest\n" + JSON.stringify(signedInUser.friendRequest, null, 2));
for (var x = 0; x < users.length; x++) {
users[x].isFriend = false;
console.log("\n" + users[x].lastName);
for (var i = 0; i < signedInUser.friendRequest.length; i++) {
console.log(users[x]._id + ' - ' + signedInUser.friendRequest[i].friendId);
if (users[x]._id === signedInUser.friendRequest[i].friendId) {
users[x].isFriend = true;
console.log('test');
break;
}
}
console.log(users[x].isFriend);
}
console.log("\nFinal users:\n" + JSON.stringify(users, null, 2));
}
test(null, signedInUser);
मुझे निम्नलिखित परिणाम दिखाई दे रहे हैं:
signedInUser.friendRequest
[
{
"friendId": "51ee2017c2023cc816000002",
"read": 0,
"date_requested": "2013-07-23T06:29:39.021Z"
},
{
"friendId": "51ee203cc2023cc816000003",
"read": 0,
"date_requested": "2013-07-23T06:42:37.872Z"
}
]
Smith
51ee2017c2023cc816000001 - 51ee2017c2023cc816000002
51ee2017c2023cc816000001 - 51ee203cc2023cc816000003
false
Jones
51ee2017c2023cc816000002 - 51ee2017c2023cc816000002
test
true
Macks
51ee2017c2023cc816000003 - 51ee2017c2023cc816000002
51ee2017c2023cc816000003 - 51ee203cc2023cc816000003
false
Final users:
[
{
"lastName": "Smith",
"_id": "51ee2017c2023cc816000001",
"isFriend": false
},
{
"lastName": "Jones",
"_id": "51ee2017c2023cc816000002",
"isFriend": true
},
{
"lastName": "Macks",
"_id": "51ee2017c2023cc816000003",
"isFriend": false
}
]
लॉग स्टेटमेंट के गलत स्थान पर होने के अलावा (मुझे नहीं लगता कि मैंने आपके कोड के शब्दार्थ को बदल दिया है), इनपुट के इस सेट के साथ, तर्क काम करता है। यह संभावना है कि आप जिस इनपुट की अपेक्षा कर रहे थे वह वह नहीं है जो आप प्राप्त कर रहे हैं।
यह पता चला है कि ओपी नोडज के लिए नेवला मूल चालक का उपयोग कर रहा था और शोध के बाद यहां समस्या के तुलनात्मक हिस्से का उत्तर मिला:नेवला _id और स्ट्रिंग्स की तुलना करना