如何根据键/值将对象转换为数组?

时间:2018-08-08 15:16:00

标签: javascript

我有一个属性为true / false的对象,我需要返回一个只有属性名称为true的数组。

我尝试了Object.entries,但不确定现在如何创建数组。

const inputs = {
  a: true,
  b: true,
  c: false
}


// result should be ['a','b']

// i have tried so far this one with no success
// const result = Object.entries(inputs).map((x, idx) => console.log(x))

3 个答案:

答案 0 :(得分:6)

Object.keys(inputs).filter(key => inputs[key])

答案 1 :(得分:1)

enter image description here

使用Use my JSFiddle for the code.(由MDN描述为

  

创建一个新数组,其中包含所有通过提供的功能实现的测试的元素

在Object.keys上调用它,它是对象的内置数组:

  

返回给定对象属性名称的数组

来源:filter array method

所以,把它们放在一起,看起来就像

const inputs = {
 a: true,
 b: true,
 c: false
}
console.log(inputs); // Output: {a: true, b: true, c: false}

const arr = Object.keys(inputs).filter(keyName => inputs[keyName]);
console.log(arr); // Output: ["a", "b"]

答案 2 :(得分:0)

仅提供对象键,请使用filter

赞:

const inputs = {
  a: true,
  b: true,
  c: false
};

var true_inputs = Object.keys(inputs).filter(key => inputs[key]);
console.log(true_inputs);

或Jquery map

const inputs = {
  a: true,
  b: true,
  c: false
};


var true_inputs = $.map(inputs, function(n, i) { if(n) return i });
console.log(true_inputs);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>

要获取整个对象,请使用for .. in: 像这样:

const inputs = {
  a: true,
  b: true,
  c: false
};


var true_inputs = {};

for(var key in inputs){
	if(inputs[key])
	  true_inputs[key]=inputs[key];
}

console.log(inputs);
console.log(true_inputs);