检查 userid 是否与数组中的一个匹配

Check if userid matches one in the array

我正在尝试检查用户 ID 是否在此数组中,如果是,还从中获取“文本”。

数组:

const staff = [
    {
        user: '245569534218469376',
        text: 'dev'
    },
    {
        user: '294597887919128576',
        text: 'loner'
    }
];

我试过 if (staff.user.includes(msg.member.id))(我认为行不通,但也没有。)

const findUser = (users, id) => users.find(user => user.id === id)

const usersExample = [
  {
    id: '123456765',
    text: 'sdfsdfsdsd'
  },
  {
    id: '654345676',
    text: 'fdgdgdg'
  }
]
//////////////////


const user = findUser(usersExample, '123456765')

console.log(user && user.text)

数组上的 some 方法用于判断某项是否满足条件,它类似于 find 方法,但 find 方法 returns 是 some 方法 return 所在的项对或错。

const staff = [
    {
        user: '245569534218469376',
        text: 'dev'
    },
    {
        user: '294597887919128576',
        text: 'loner'
    }
];

const isStaff = (staff, id) => staff.some(s => s.user === id);

console.log(isStaff(staff, '123'));

console.log(isStaff(staff, '245569534218469376'));

您可以尝试这样的操作:

const staff = [
    {
        user: '245569534218469376',
        text: 'dev'
    },
    {
        user: '294597887919128576',
        text: 'loner'
    }
];

let item = staff.find(item => item.user == '294597887919128576'); // msg.member.id

if (item) {
    console.log(item.text);
}

另一种方法是:

const inArray = (array, id) => array.filter(item => item.user === id).length >= 1;

const users = [
{
  user: '245569534218469356',
  text: 'foo'
  }, {
  user: '245564734218469376',
  text: 'bar'
  }, {
  user: '246869534218469376',
  text: 'baz'
  }
];


console.log(inArray(users, '246869534218469376'));  // true 
console.log(inArray(users, '222479534218469376'));  // false