首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在对象变量中搜索对象

在对象变量中搜索对象
EN

Stack Overflow用户
提问于 2022-03-02 20:17:44
回答 3查看 52关注 0票数 -1

所以我有这样一个变量:

代码语言:javascript
复制
var userdata = {
  luk: {
    username: 'luktvpl',
    dcid: '53764947549426666',
    password: '',
    email: 'luk@...',
    xp: '0',
    lastwork: '',
    lastmessage: '',
    lastmailcode: '',
    inventory: [ 'staff1', 'kawa' ],
    statusy: {},
    osiagniecia: {},
    pety: {},
    UUID: 'k9-bf7hhhcee-ffcb4fececb8',
    IdBezpieczenstwa: ''
  },
  luk2: {
    username: 'luktvpl2',
    dcid: '53764947444666',
    password: '',
    email: 'luk@...',
    xp: '0',
    lastwork: '',
    lastmessage: '',
    lastmailcode: '',
    inventory: [ 'staff4', 'kawa' ],
    statusy: {},
    osiagniecia: {},
    pety: {},
    UUID: 'k9-bf71-hee-ffcb4fececb8',
    IdBezpieczenstwa: ''
  }

};

我想搜索这个变量以寻找用户,例如uuid:"k9-bf71-hee-ffcb4fececb8“或使用dcid : 53764947549426666,我如何在node.js中这样做,并希望它返回用户(luk/luk 2)

EN

回答 3

Stack Overflow用户

发布于 2022-03-02 20:34:35

为此使用对象析构。

代码语言:javascript
复制
let valuesToFind = ["53764947549426666", "k9-bf71-hee-ffcb4fececb8"];

const keys = Object.keys(userData);

keys.forEach((key, index) =>{
    const {dcid, UUID} = userData[key];
    if(dcid == valuesTofind[0] || UUID == valuesToFind[1]){
         console.log(`Found user ${userData[key}`);
    }
})
票数 0
EN

Stack Overflow用户

发布于 2022-03-02 21:09:09

在我的解决方案中,我从一个对象内部的所有对象获得键。然后迭代键并检查UUID或dcid是否在对象中。然后,我检查这个键的值是否等于搜索字符串/ id。

代码语言:javascript
复制
 const userdata = {
  luk: {
    username: 'luktvpl',
    dcid: '53764947549426666',
    password: '',
    email: 'luk@...',
    xp: '0',
    lastwork: '',
    lastmessage: '',
    lastmailcode: '',
    inventory: [ 'staff1', 'kawa' ],
    statusy: {},
    osiagniecia: {},
    pety: {},
    UUID: 'k9-bf7hhhcee-ffcb4fececb8',
    IdBezpieczenstwa: ''
  },
  luk2: {
    username: 'luktvpl2',
    dcid: '53764947444666',
    password: '',
    email: 'luk@...',
    xp: '0',
    lastwork: '',
    lastmessage: '',
    lastmailcode: '',
    inventory: [ 'staff4', 'kawa' ],
    statusy: {},
    osiagniecia: {},
    pety: {},
    UUID: 'k9-bf71-hee-ffcb4fececb8',
    IdBezpieczenstwa: ''
  }

};


let results = [];
const toSearch = "53764947444666";

Object.keys(userdata).forEach(ob => {
  for(key in userdata[ob]) {
    if(key === 'dcid' || key === 'UUID') {
      if(userdata[ob][key].indexOf(toSearch)!=-1) {
        results.push(userdata[ob]);
        } 
    } 
  }
})


console.log("result", results)

票数 0
EN

Stack Overflow用户

发布于 2022-03-02 21:16:55

我想出来了。我应该是这样的:

代码语言:javascript
复制
//variable with data
var userdata = {
  luk: {
    username: 'luktvpl',
    dcid: '53764947549426666',
    password: '',
    email: 'luk@...',
    xp: '0',
    lastwork: '',
    lastmessage: '',
    lastmailcode: '',
    inventory: [ 'staff1', 'kawa' ],
    statusy: {},
    osiagniecia: {},
    pety: {},
    UUID: 'k9-bf7hhhcee-ffcb4fececb8',
    IdBezpieczenstwa: ''
  },
  luk2: {
    username: 'luktvpl2',
    dcid: '53764947444666',
    password: '',
    email: 'luk@...',
    xp: '0',
    lastwork: '',
    lastmessage: '',
    lastmailcode: '',
    inventory: [ 'staff4', 'kawa' ],
    statusy: {},
    osiagniecia: {},
    pety: {},
    UUID: 'k9-bf71-hee-ffcb4fececb8',
    IdBezpieczenstwa: ''
  }

};
//function for searching
function DbGetBy(what,data) {
    //generate array
    const keys = Object.keys(userdata);
    //look for user with "what" that have value "data"
    return keys.find((key,index)=>userdata[key][what]== data);  
};
//search for uuid : k9-bf7hhhcee-ffcb4fececb8
console.log(DbGetBy("UUID","k9-bf7hhhcee-ffcb4fececb8"));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71328654

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档