我有这个对象(它的属性比这里列出的要多得多,具有不同的值):

var dbValuesObj = {
    //1. group of properties that I don't want to touch(I don't want to check the values for these)
    rebateNetSaleMinAmt1: 500,
    rebateNetSaleMaxAmt1: 400,
    rebateAmtWoProd1: 0,
    rebateAmtAllProd1: 200,
    rebateAmtOneProd1: 0,

    //2. group of properties that I want to change (I know exactly what is the list of the properties that I want to check and change their values, if they are equal to 0)
    rebateNetSaleMinAmt2: 100,
    rebateNetSaleMaxAmt2: 0,
    rebateAmtWoProd2: 300,
    rebateAmtAllProd2: 0,
    rebateAmtOneProd2: 700
}


我需要从#2点更改对象属性的值为0的值。
因此,就我而言,我想将rebateNetSaleMaxAmt2和rebateAmtAllProd2更改为其他值。但是我不想从#1检查或更改属性

我尝试使用

for(var property in dbValuesObj)


但我检查了所有属性,但不想查看/更改/检查#1中的属性

最佳答案

我需要从#2点更改对象属性的值
  值是0。所以我要更改
  将rebateNetSaleMaxAmt2和rebateAmtAllProd2设置为不同的值。


您可以先将它们过滤掉

var requiredKeys = Object.keys( dbValuesObj ).filter( k => k.slice(-1) == "2" && dbValuesObj[k] == 0 );


现在您可以迭代此requiredKeys数组

requiredKeys.forEach( function( key ){
   console.log( key, dbValuesObj[key]  )
})


对于您提供的数据,它将打印


  “ rebateNetSaleMaxAmt2” 0
  
  “ rebateAmtAllProd2” 0

07-24 09:44
查看更多