Основываясь на ответе на этой странице, я написал функцию, которая реплицирует функцию функции 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
Здесь я использую .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)
Используйте карту и проверьте наличие компакт-диска с помощью функции 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)
Вы можете найти нужный объект и обновить свойство, если оно найдено.
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; }