मेरे जावास्क्रिप्ट में मेरे पास उपयोगकर्ताओं की एक सरणी है। प्रत्येक उपयोगकर्ता के लिए मैं तुलना कर रहा हूं कि वह उपयोगकर्ता किसी अन्य सूची में दिखाई देता है या नहीं।

var users = USERS.getUsers();

for (var i = 0; i < users.length; i++) {
    var u = users[i];
    if (util.pluck(myList.adminUsers, 'email').includes(u.email)) {
        // How do I check the value of the plucked value for myList.adminUsers.locationId ? 
        u.status = "admin";
    } 
}

उपयोगकर्ता उपयोगकर्ता वस्तुओं की एक सरणी है।

[{...}]
    0:
        id: "1"
        email: "johndoe@gmail.com"
        firstname: "John"
        lastname: "Doe"
        roleid: "1" 
        _proto__: Object
    1:
        id: "2"
        email: "janedoe@gmail.com"
        firstname: "Jane"
        lastname: "Doe"
        roleid: "1"
        _proto__: Object

myList.adminUsers उपयोगकर्ता ऑब्जेक्ट की एक सरणी भी है लेकिन locationId के साथ भी।

[{...}]
    0:
        id: "1"
        email: "johndoe@gmail.com"
        firstname: "John"
        lastname: "Doe"
        roleid: "1"
        locationId: "123"
        _proto__: Object

मुझे इस चेक में किसी अन्य फ़ील्ड की तुलना करने की आवश्यकता है। तो मुझे यह देखने की ज़रूरत है कि क्या myList.adminUsers से निकाली गई वस्तु में एक फ़ील्ड स्थान है जो x के बराबर है, लेकिन मुझे यकीन नहीं है कि यह कैसे करना है?

मैं प्लक की गई वस्तु तक कैसे पहुंच सकता हूं ताकि मैं locationId के मान की जांच कर सकूं?

0
peterdickins 14 फरवरी 2020, 19:46
मुझे लोदश दस्तावेज़ में pluck दिखाई नहीं दे रहा है। क्या आप अंडरस्कोर.जेएस का उपयोग कर रहे हैं?
 – 
Barmar
14 फरवरी 2020, 19:53

2 जवाब

pluck के बजाय findWhere का इस्तेमाल करें। आप इसे एक ऐसी वस्तु दे सकते हैं जिसमें वे सभी गुण हों जिनका आप मिलान करना चाहते हैं।

if (util.findWhere(myList.adminUsers, {email: u.email, locationId: u.locationId})) {
    u.status = "admin";
}
0
Barmar 14 फरवरी 2020, 20:01
{email: u.email, locationId:u.locationId}? क्या वह एक संयोजन का परीक्षण करेगा?
 – 
danh
14 फरवरी 2020, 19:58
हां। दस्तावेज़ीकरण कहता है कि इसे सभी प्रदान किए गए कुंजी-मूल्य जोड़े से मेल खाना है।
 – 
Barmar
14 फरवरी 2020, 19:59

इससे आपको उन व्यवस्थापकों की सूची मिलनी चाहिए जो उपयोगकर्ताओं की सूची में पाए जाते हैं और उस स्थान आईडी में हैं जो आप एक मान के रूप में प्रदान करते हैं (मैंने इसे एक चर के रूप में सेट किया है)।

const users = [
  {
    id: "1",
    email: "johndoe@gmail.com",
    firstname: "John",
    lastname: "Doe",
    roleid: "1" 
  },
  {
    id: "2",
    email: "janedoe@gmail.com",
    firstname: "Jane",
    lastname: "Doe",
    roleid: "1"
  }
];

const admins = [
  {
    id: "1",
    email: "johndoe@gmail.com",
    firstname: "John",
    lastname: "Doe",
    roleid: "1",
    locationId: "123"
  }
];

const locationIdToFind = '123';

const adminsWithLocation = _.intersectionWith(admins, users, (admin, user) => _.isEqual(admin.email, user.email) && _.isEqual(admin.locationId, locationIdToFind));

console.log(adminsWithLocation);
<script src="https://cdn.jsdelivr.net/npm/lodash@4.17.15/lodash.min.js"></script>
0
th3n3wguy 20 फरवरी 2020, 09:27