如何循环JavaScript对象的属性

时间:2017-04-05 05:49:53

标签: javascript object javascript-objects

我有一个对象,我希望在当月/之前使月份为假。

在:

var oObj = {
                "isJan" : true,
                "isFeb" : true,
                "isMar" : true,
                "isApr" : true,
                "isMay" : true,
                "isJun" : true,
                "isJul" : true,
                "isAug" : true,
                "isSep" : true,
                "isOct" : true,
                "isNov" : true,
                "isDec" : true
            }

今天是5月4日,因此对象应该是:

            {
                "isJan" : false,
                "isFeb" : false,
                "isMar" : false,
                "isApr" : false,
                "isMay" : true,
                "isJun" : true,
                "isJul" : true,
                "isAug" : true,
                "isSep" : true,
                "isOct" : true,
                "isNov" : true,
                "isDec" : true
            }

6 个答案:

答案 0 :(得分:1)

试试这个



var months = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
/*var inputObj = {
  "isJan": true,
  "isFeb": true,
  "isMar": true,
  "isApr": true,
  "isMay": true,
  "isJun": true,
  "isJul": true,
  "isAug": true,
  "isSep": true,
  "isOct": true,
  "isNov": true,
  "isDec": true
};*/
var currentMonth = new Date().getMonth();
var outputObj = {};
months.forEach( function(key, index){
  outputObj[ "is" + key ] = ( index <= currentMonth );
});
console.log( outputObj );
&#13;
&#13;
&#13;

答案 1 :(得分:0)

您可以使用其他人显示的for-in循环。但是,您还需要确保获得的密钥是对象的实际属性,并且不是来自原型:

for (var key in p) {
if (p.hasOwnProperty(key)) {
console.log(key + " -> " + p[key]);
}
}

希望这会有所帮助!

答案 2 :(得分:0)

您可以这样做:

var keys = Object.keys(oObj)

以数组格式提供所有键。然后你可以使用简单的for循环来解析它。

for(var i=0; i<keys.length; i++){
   var individual_obj = oObj[key[i]] ;
   // set your conditions here
}

答案 3 :(得分:0)

使用$result = DB::select('select distinct... where coursedetails.courseID = ? ', [$courseID]); Object.keys()Array.prototype.indexOf()函数的解决方案:

String.prototype.slice()

答案 4 :(得分:-1)

  • 拿钥匙
  • 获取当前月份并添加1(因为您也希望避免4月)
  • 循环直到月份值并将其设为假

就是这样。

var oObj = {
  "isJan": true,
  "isFeb": true,
  "isMar": true,
  "isApr": true,
  "isMay": true,
  "isJun": true,
  "isJul": true,
  "isAug": true,
  "isSep": true,
  "isOct": true,
  "isNov": true,
  "isDec": true
}
var k = Object.keys(oObj);
var month = new Date().getMonth() + 1;
console.log(i);
for (var i = 0; i < month; i++) {
  oObj[k[i]] = false;
}

console.log(oObj);

答案 5 :(得分:-1)

你需要做两件事

  1. 循环对象 您可以使用Object.keys获取对象键的数组

  2. 在循环中创建条件 在当前月份之前检查对象键中的月份。为此,您可以使用getMonth object

  3. 中的Date函数

    示例:

    &#13;
    &#13;
    const oObj = {
    	"isJan" : true,
        "isFeb" : true,
        "isMar" : true,
        "isApr" : true,
        "isMay" : true,
        "isJun" : true,
        "isJul" : true,
        "isAug" : true,
        "isSep" : true,
        "isOct" : true,
        "isNov" : true,
        "isDec" : true
    }
    const now = new Date();
    const currentMonth = now.getMonth();
    const keys = Object.keys(oObj);
    
    for (var i = 0; i < keys.length; i += 1){
          oObj[keys[i]] = currentMonth < i;
    }
    console.log(oObj);
    &#13;
    &#13;
    &#13;