小编Jam*_*gon的帖子

为什么我们总是需要检查对象是否有密钥? - JS

我有以下代码.

var obj = {
  name : 'Krysten',
  age : 33,
  hasPets : false
};

function listAllValues(obj) {
  // your code here
  var array = [];
  for(var key in obj) {
    if(obj.hasOwnProperty(key)) {
        var value = obj[key];
        array.push(value);
    }
}
  console.log(array);

}

listAllValues(obj);
Run Code Online (Sandbox Code Playgroud)

我想专注于这段代码:

for(key in obj) {
    if(obj.hasOwnProperty(key)) {

    }
}
Run Code Online (Sandbox Code Playgroud)

为什么我们总是需要检查是否obj有自己的属性键?这对我来说听起来不太清楚.任何能够以非专业术语向我解释的人?对不起我在这里.

javascript

3
推荐指数
1
解决办法
135
查看次数

检查奇数,无需模运算符

我正在创建一个函数,返回传入的数字是否为奇数没有模运算符.棘手的部分是它应该适用于负数和零.

到目前为止这是我的代码:

function testodd(num) {
  return (num/2)*2==num;
}

var output = testodd(17);
console.log(output); // --> true
Run Code Online (Sandbox Code Playgroud)

我在这里犯了一些错误吗?或者有更好的方法吗?

javascript

2
推荐指数
2
解决办法
2564
查看次数

获取数组字长 - JS

我正在创建一个函数:

  • 返回一个数组,其中包含位于给定键的数组的所有奇数长度的单词元素.
  • 如果数组为空,则应返回一个空数组.
  • 如果它不包含奇数长度元素,则应返回空数组.
  • 如果给定键的属性不是数组,则它应返回一个空数组.
  • 如果给定键没有属性,则应返回一个空数组.

这是我的解决方案,目前在某些方面有效:

function getOddLengthWordsAtProperty(obj, key) {

  var output = [];

  for(var i = 0; i < obj.key.length; i++){
     if (key in obj){
       if (Array.isArray(obj[key])){
         if(obj[key].length){
         if(obj.key[i].split("").length % 2 !== 0){
            output.push(obj.key[i]);
         }   

   }
   }

  }else{
    return [];
  }

 }

  return output;
}



var obj = {
  key: ['It', 'has', 'some', 'words']
};

var output = getOddLengthWordsAtProperty(obj, 'key');
console.log(output); // --> ['has', 'words']
Run Code Online (Sandbox Code Playgroud)

这里的问题是我的代码返回:

TypeError:无法读取未定义的属性"length"

javascript arrays

-2
推荐指数
1
解决办法
485
查看次数

标签 统计

javascript ×3

arrays ×1