问题说明:编写一个函数displayOptions,该函数接收对象“ displayDevice”并返回一个数组。输入对象的属性将是“视频输出”选项,每个选项都将具有true或false值。您的函数应该收集所有具有真实值的“视频输出”名称。
我想出了一种使用.filter()方法解决此问题的方法,但是,我对此并不完全了解,而是想尝试使用for..in语句来解决此问题。我能够遍历该对象,但是它返回数组中的所有键,而不仅仅是“ true”键。让我知道我在哪里错了。
我的代码:
function displayOptions(displayDevice) {
for(var key in displayDevice) {
if(displayDevice[key] === true) {
return Object.keys(displayDevice);
}
}
}
var televisionA = {
VGA: false,
HDMI1: true,
HDMI2: true
}
var monitor001 = {
VGA: true,
DVI: false,
HDMI1: true,
HDMI2: true
}
var monitor002 = {
HDMI1: true,
HDMI2: true,
DVI: true
}
displayOptions(televisionA); //["HDMI1", "HDMI2"];
displayOptions(monitor001); //["VGA", "HDMI1", "HDMI2"];
答案 0 :(得分:0)
使用Object.keys获取密钥并根据true / false对其进行过滤
var televisionA = {
VGA: false,
HDMI1: true,
HDMI2: true
}
var monitor001 = {
VGA: true,
DVI: false,
HDMI1: true,
HDMI2: true
}
var monitor002 = {
HDMI1: true,
HDMI2: true,
DVI: true
}
console.log(Object.keys(televisionA).filter((e)=>televisionA[e]))
console.log(Object.keys(monitor001).filter((e)=>monitor001[e]))
console.log(Object.keys(monitor002).filter((e)=>monitor002[e]))
答案 1 :(得分:0)
filter
更容易:
function displayOptions(displayDevice) {
return Object.entries(displayDevice).filter(([, bool]) => bool).map(e => e[0]);
}
var televisionA = {
VGA: false,
HDMI1: true,
HDMI2: true
}
var monitor001 = {
VGA: true,
DVI: false,
HDMI1: true,
HDMI2: true
}
var monitor002 = {
HDMI1: true,
HDMI2: true,
DVI: true
}
console.log(displayOptions(televisionA));
console.log(displayOptions(monitor001));
答案 2 :(得分:0)
您的主要问题是,当您发现第一个具有key
值的true
时,您将在其中返回所有对象键(读取Object.keys()的作用)。您需要创建新的数组并在找到true
时按其上的键。
function displayOptions(displayDevice)
{
let newObj = [];
for (var key in displayDevice)
{
if (displayDevice[key] === true) // or just if (displayDevice[key])
newObj.push(key);
}
return newObj;
}
var televisionA = {
VGA: false,
HDMI1: true,
HDMI2: true
}
var monitor001 = {
VGA: true,
DVI: false,
HDMI1: true,
HDMI2: true
}
var monitor002 = {
HDMI1: true,
HDMI2: true,
DVI: true
}
console.log(displayOptions(televisionA)); //["HDMI1", "HDMI2"];
console.log(displayOptions(monitor001)); //["VGA", "HDMI1", "HDMI2"];
答案 3 :(得分:0)
仅供以后参考,因为我没有在答复中看到,所以另一个选择可以是class class_1;
rand bit[31:0] array;
constraint three_ones {
$countones(array) == 3;
}
endclass
:
reduce