检查两者是否为空或者是否包含Javascript对象中的值(ES2015)

时间:2016-12-12 16:03:34

标签: javascript ecmascript-6

我正在尝试找出最好,最干净/最简洁的方法,首先检查对象是否有任何值,如果是,如果其中一个值为71

实质上,如果对象是empty,那么函数应该返回true。此外,如果函数不是empty但是包含71作为其中一个值(它们是数字索引的)那么它应该是真的。其他一切都是假的。

我现在所拥有的东西虽然有点混乱而且冗长:

facets是对象

if (Object.keys(facets).length === 0) {
  if (facets[index] == 71) {
    return true;
  } else {
    return false;
  }
}

3 个答案:

答案 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>

&#13;
&#13;
@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;
&#13;
&#13;

答案 1 :(得分:0)

  

实质上,如果对象为空,则该函数应返回true。此外,如果函数不为空但包含71作为其中一个值(它们是数字索引),那么它应该是真的。其他一切都是假的。

return !Object.keys(facets).length || facets[index] == 71;

无需显式返回truefalse,因为比较和逻辑运算符会产生布尔值。

答案 2 :(得分:-1)

您可以轻松实现使用下划线JS

       facets = {1:34,2:71};

       return _.isEmpty(facets) || _.contains(facets,71)