检查对象中是否存在值

时间:2019-02-17 08:40:08

标签: javascript

我有对象:

var roles = { roles: [0: { name: 'admin' }, 1: { name: 'user' }] }

如何检查值user是否存在?

我尝试做:

console.log(('user' in roles));

但是此返回false。为什么?

2 个答案:

答案 0 :(得分:2)

in运算符检查属性而不是其值

let test = {'a':1,'b':2}

console.log('a' in test)
console.log(1 in test)

如何搜索值

在这里,我使用some数组方法来检查所需的值是否在对象中。

var roles = { roles: [{ name: 'admin' },{ name: 'user' }] }

let searchValue = (input,searchKey) => {
  return input.some(( {name} ) => name === searchKey)  //
}

console.log(searchValue(roles.roles, 'user'))
console.log(searchValue(roles.roles, 'user not foound'))

答案 1 :(得分:2)

使用适当的对象,您可以将roles.roles视为数组,并使用Array#some查找值。

这适用于任何结构类似的结构,并使用Object.assign分配给数组。

function check(name) {
    return Object.assign([], roles.roles).some(o => o.name === name);
}

var roles = { roles: { 0: { name: 'admin' }, 1: { name: 'user' } } };

console.log(check('user'));
console.log(check('bar'));

直接获取数组,就可以省略赋值部分。

function check(name) {
    return roles.roles.some(o => o.name === name);
}

var roles = { roles: [{ name: 'admin' }, { name: 'user' }] };

console.log(check('user'));
console.log(check('bar'));