Заменить свойство вложенного объекта, сопоставив его ключ - PullRequest
0 голосов
/ 22 января 2020

У меня есть объект следующего вида

let obj = {
    "p1" : "main",
    "p2" : {
        "p21" : [
            {
                "key1" : "val1",
                "value1" : "val2",
            },
            {
                "prop"  : "test",
                "value" : "dummy"
            }
        ]
    }
}

Нужно найти «prop», и если он присутствует, установить «value» в пустую строку. Обратите внимание, что внутри «p21» могут быть любые числовые объекты в любом порядке. Просто нужно найти «prop» и затем обновить «value» до пустой строки

Попробовал следующее

obj.p2.p21.map((item) => {
    if (item.hasOwnProperty("prop")) {
      item.value = "";
    }
})

Ответы [ 2 ]

2 голосов
/ 22 января 2020

Вам нужно создать функцию для проверки ключа и затем заменить значение.

let obj = {
  "p1": "main",
  "p2": {
    "p21": [{
        "key1": "val1",
        "value1": "val2",
      },
      {
        "prop": "test",
        "value": "dummy"
      }
    ]
  }
}

function replaceValue(item) {
  for (var i in item) {
    if (i == "prop") {
      item["value"] = "";
      break;//break if you only want to place the first , otherwise remove it
    }
  }
}

obj.p2.p21.map(item => replaceValue(item));

console.log(obj);
.as-console {
  height: 100% !important;
}
1 голос
/ 22 января 2020
obj.p2.p21.map((elem) => {
    if(Object.keys(elem)[0] === "prop") 
        elem.value = ""
})

попробовать что-то подобное?

...