我有对象:
var roles = { roles: [0: { name: 'admin' }, 1: { name: 'user' }] }
如何检查值user
是否存在?
我尝试做:
console.log(('user' in roles));
但是此返回false
。为什么?
答案 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'));