Как обновить значение для определенного ключа в списке объектов в Javascript?

Основываясь на ответе на этой странице, я написал функцию, которая реплицирует функцию функции unique(input,'rows') MATLAB, а дополнительная функция принимает допуски для проверки уникальности. Он также возвращает индексы такие, что c = data[ia,:] и data = c[ic,:]. Сообщите, если вы видите какие-либо расхождения или ошибки.

def unique_rows(data, prec=5):
    import numpy as np
    d_r = np.fix(data * 10 ** prec) / 10 ** prec + 0.0
    b = np.ascontiguousarray(d_r).view(np.dtype((np.void, d_r.dtype.itemsize * d_r.shape[1])))
    _, ia = np.unique(b, return_index=True)
    _, ic = np.unique(b, return_inverse=True)
    return np.unique(b).view(d_r.dtype).reshape(-1, d_r.shape[1]), ia, ic
0
задан Souvik Ray 6 March 2019 в 09:55
поделиться

3 ответа

Здесь я использую .forEach и просто проверяю свойство cd, затем обновляю col_val.

let final_json = {"ab": [{"cd": "ee", "col_val": {}},{"ef": "uu", "col_val": {"gg": "hh"}}]}
final_json.ab.forEach(o => {
  if (o.cd) o.col_val = {testKey: "testValue"}
})
console.log(final_json)

0
ответ дан holydragon 6 March 2019 в 09:55
поделиться

Используйте карту и проверьте наличие компакт-диска с помощью функции hasOwnProperty(). hasOwnProperty() сообщает, присутствует ли конкретное свойство в объекте или нет. См.

let final_json = {
  "ab": [{
    "cd": "ee",
    "col_val": {}
  }, {
    "ef": "uu",
    "col_val": {
      "gg": "hh"
    }
  }]
};
final_json.ab.map(e => {
  if (e.hasOwnProperty('cd'))
      e.col_val = 'my value'
    return e;
})
console.log(final_json)

0
ответ дан ellipsis 6 March 2019 в 09:55
поделиться

Вы можете найти нужный объект и обновить свойство, если оно найдено.

let object = { ab: [{ cd: "ee", col_val: {} }, { ef: "uu", col_val: { gg: "hh" } }] },
    target = (object["ab"] || []).find(o => 'cd' in o);

if (target) {
    target.col_val = { rr: "ff" };
}

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

0
ответ дан Nina Scholz 6 March 2019 в 09:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: