如何将布尔对象转换为数组

Nat*_*ner 3 javascript typescript lodash

如何使用布尔值取一个简单的对象并将其转换为一个数组,其中只有那些值为true的键才会在数组中结束?

例如:

myObject = {
  option1: true,
  option2: false,
  option3: true,
  option4: true
}
Run Code Online (Sandbox Code Playgroud)

['option1','option3','option4']
Run Code Online (Sandbox Code Playgroud)

我尝试使用这里_.pick(myObject, Boolean)建议,但这只是产生一个空对象.我正在使用Typescript,所以如果有任何可以用来完成这个的Typescript魔法,那我也是这样做的.

rye*_*lar 7

lodash解决方案是使用lodash#pickBylodash#keys获取所有真正的密钥.

var result = _(myObject).pickBy().keys().value();
Run Code Online (Sandbox Code Playgroud)

var myObject = {
  option1: true,
  option2: false,
  option3: true,
  option4: true
};

var result = _(myObject).pickBy().keys().value();

console.log(result);
Run Code Online (Sandbox Code Playgroud)
.as-console-wrapper{min-height:100%;top:0;}
Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script>
Run Code Online (Sandbox Code Playgroud)


tos*_*skv 6

这可以通过vanilla js轻松实现.

let myObject = {
  option1: true,
  option2: false,
  option3: true,
  option4: true
}

let array = Object.keys(myObject).filter(key => myObject[key]);

console.log(array);
Run Code Online (Sandbox Code Playgroud)

你可以在这里看到一个有效的例子.