如何在任何级别递归更改JS Object / JSON值?

时间:2018-03-04 12:41:15

标签: javascript json nested key

请注意,我提供的结构只是一个示例,但可以是

主要目标是更改密钥'在任何级别递归地选择我选择的值。

以下是澄清的例子:

    var items = {
      price: 10,
      child: {
        price: 20, 
         child: {
           price: 10
         }
      },
      child2: {
        price: 40,
        child: {
          price: 50,
          child: [{ price: 30 }, { price: 40 }]
        }
      }
    };

鉴于此,您如何将所有价格更改为0?

2 个答案:

答案 0 :(得分:1)

递归循环并检查密钥price

var items = {  price: 10,  child: {    price: 20,    child: {      price: 10    }  },  child2: {    price: 40,    child: {      price: 50,      child: [{        price: 30      }, {        price: 40      }] }  }};

function loop(obj) {
  if (typeof obj !== 'object') return;
  Object.keys(obj).forEach((k) => {
    if (k === 'price') obj[k] = 0;
    else loop(obj[k]);
  });
}

loop(items);

console.log(items)
.as-console-wrapper { max-height: 100% !important; top: 0; }

答案 1 :(得分:1)

这是一个大致的想法:

setTextAlignment() OR setGravity()