JavaScript无法解决的挑战

时间:2018-05-08 18:11:39

标签: javascript

我遇到了这两个挑战:挑战13 & 挑战15 。任何人都可以帮助我吗?

挑战13

  

您将获得一个名为checkObj的对象。使用for... in循环,确定对象是否包含属性foundNum。如果存在,请将Found!记录到控制台,否则将Does not exist!记录到控制台。

let checkObj = {
  oddNum: 1,
  evenNum: 2,
  foundNum: 5,
  randomNum: 18
};

for (let prop in checkObj) {
  if(prop === 'foundNum') {
    console.log("Found!") 
  } else {
    console.log('Does not exist!')
  }
}

我对这次挑战的结果打印出“不存在!”对于每个财产。如果没有,它应该只打印一次。

挑战14 < - 我解决了。 挑战15 需要这一挑战。

  

您将获得另一个名为objToArray的空数组。使用for ... in循环,使用checkObj对象中的所有数字填充数组,如果它们大于或等于2。

let objToArray = [];
for(let prop in checkObj){
  if(checkObj[prop] >= 2){
    objToArray.push(checkObj[prop]);
  }
}
console.log(objToArray);

挑战15

  

使用for循环,遍历objToArray以确定是否有任何数字可被6整除。如果有,请将true记录到控制台。如果没有,请将false记录到控制台。

for(let i = 0; i<objToArray.length; i++){
  if(objToArray[i]%6===0){
    console.log(true);
  } else{
    console.log(false);
  }
}

与challenge13相同,我的代码保持打印错误,但如果没有任何可被6整除的数字,则只打印一次。

1 个答案:

答案 0 :(得分:0)

不是在循环中打印,而是保留一个布尔变量并在找到属性时切换它,最后根据循环后的布尔值显示消息。

let checkObj = {
  oddNum: 1,
  evenNum: 2,
  foundNum: 5,
  randomNum: 18
};

let found = false;

for (let prop in checkObj) {
  // compare with the property name
  if(prop === 'foundNum') {
    // if found then update the boolean value
    found = true;
    // you can now break the for loop since property already found
    break;
  } 
}

// based on the boolean value show your message
console.log( found ? 'Found' : 'Not found');

&#13;
&#13;
let checkObj = {
  oddNum: 1,
  evenNum: 2,
  foundNum: 5,
  randomNum: 18
};

let found = false;

for (let prop in checkObj) {
  // compare with the property name
  if (prop === 'foundNum') {
    // if found then update the boolean value
    found = true;
    // you can now break the for loop since property already found
    break;
  }
}

// based on the boolean value show your message
console.log(found ? 'Found' : 'Not found');
&#13;
&#13;
&#13;

同样的逻辑也需要用于最后的挑战。

let possible = false;

for(let i = 0; i<objToArray.length; i++){
  // check number is divisible
  if(objToArray[i] % 6 === 0){
    // if divisible then updaet the boolean value
    possible = true;
    // break the for loop
    break;
  }
}

console.log(possible);