我正在尝试找出最好,最干净/最简洁的方法,首先检查对象是否有任何值,如果是,如果其中一个值为71
。
实质上,如果对象是empty
,那么函数应该返回true
。此外,如果函数不是empty
但是包含71
作为其中一个值(它们是数字索引的)那么它应该是真的。其他一切都是假的。
我现在所拥有的东西虽然有点混乱而且冗长:
facets
是对象
if (Object.keys(facets).length === 0) {
if (facets[index] == 71) {
return true;
} else {
return false;
}
}
答案 0 :(得分:1)
如果您知道索引,请检查索引是否包含该值,如果不知道,请检查它是否为空:
const has = (obj, index, value) => obj[index] === 71 || !Object.keys(obj).length;
const index = 2;
const value = 71;
console.log('empty: ', has({}, index, value));
console.log('contains 71: ', has({ 1: 13}, index, value));
console.log('contains 71: ', has({ 1: 13, 2: 71 }, index, value));

如果您不知道索引,可以使用Object#keys
提取密钥,检查长度是否为0(!values.length
),如果不是Array#findIndex
则使用const facets = { 1: 0, 2: 71 };
const has = (obj, value) => {
const keys = Object.keys(obj);
return !keys.length || keys.findIndex((key) => obj[key] === value) !== -1;
}
const value = 71;
console.log('empty: ', has({}, value));
console.log('contains 71: ', has({ 1: 13}, value));
console.log('contains 71: ', has({ 1: 13, 2: 71 }, value));
看到该对象包含请求值:
Object#values

索引未知时的另一个选项是使用Object#values
。
注意:Object#values
不是ECMAScript2015(ES6)的一部分,而是ECMAScript2017中的草稿,仅受Chrome和Firefox的支持。
使用!values.length
提取值,检查长度是否为0(values
),如果不是Array#includes
则查看const facets = { 1: 0, 2: 71 };
const has = (obj, value) => {
const values = Object.values(obj);
return !values.length || values.includes(value);
}
const value = 71;
console.log('empty: ', has({}, value));
console.log('contains 71: ', has({ 1: 13}, value));
console.log('contains 71: ', has({ 1: 13, 2: 71 }, value));
是否包含请求值。< / p>
@Bean(name = "dataSource")
public DataSource getDataSource() {
ComboPooledDataSource dataSource = new ComboPooledDataSource ();
dataSource.setDriverClassName("com.mysql.jdbc.Driver");
dataSource.setUrl("jdbc:mysql://localhost:3306/usersdb");
dataSource.setUsername("root");
dataSource.setPassword("secret");
return dataSource;
}
&#13;
答案 1 :(得分:0)
实质上,如果对象为空,则该函数应返回true。此外,如果函数不为空但包含71作为其中一个值(它们是数字索引),那么它应该是真的。其他一切都是假的。
是
return !Object.keys(facets).length || facets[index] == 71;
无需显式返回true
或false
,因为比较和逻辑运算符会产生布尔值。
答案 2 :(得分:-1)
您可以轻松实现使用下划线JS
facets = {1:34,2:71};
return _.isEmpty(facets) || _.contains(facets,71)