Есть объект.
var data = {
"podauschaya_linya_1_kontura_name": {
"Короткая посадочное": {
"Значение резьбы": "G 1\"",
"Диаметр отверстия": 30,
"Подходящая номенклатура из 1С": {
"Наименование": "Стоимость сверления отверстия AISI 304 (толщ. 2 мм.) 30",
},
"Цена": "36"
}
},
"podauschaya_linya_2_kontura_name": {
"Короткая посадочное": {
"Значение резьбы": "G 1\"",
"Диаметр отверстия": 30,
"Подходящая номенклатура из 1С": {
"Наименование": "Стоимость сверления отверстия AISI 304 (толщ. 2 мм.) 30",
},
"Цена": "36"
}
},
"obratnaya_linya_2_kontura_name": {
"Короткая посадочное": {
"Значение резьбы": "G 1\"",
"Диаметр отверстия": 30,
"Подходящая номенклатура из 1С": {
"Наименование": "Стоимость сверления отверстия AISI 304 (толщ. 2 мм.) 30",
},
"Цена": "36"
}
},
"obratnaya_linya_1_kontura_name": {
"Короткая посадочное": {
"Значение резьбы": "G 1\"",
"Диаметр отверстия": 30,
"Подходящая номенклатура из 1С": {
"Наименование": "Стоимость сверления отверстия AISI 304 (толщ. 2 мм.) 30",
},
"Цена": "36"
}
},
"podauschaya_linya_rezervnogo_kotla_name": {
"Короткая посадочное": {
"Значение резьбы": "G ¾\"",
"Диаметр отверстия": 25,
"Подходящая номенклатура из 1С": {
"Наименование": "Стоимость сверления отверстия AISI 304 (толщ. 2 мм.) 25",
},
"Цена": "30"
}
},
"obratnaya_linya_rezervnogo_kotla_name": {
"Короткая посадочное": {
"Значение резьбы": "G ¾\"",
"Диаметр отверстия": 25,
"Подходящая номенклатура из 1С": {
"Наименование": "Стоимость сверления отверстия AISI 304 (толщ. 2 мм.) 25",
},
"Цена": "30"
}
},
"kotlovoi_kontur_select_name": {
"Короткая посадочное слева_сверху": {
"Значение резьбы": "G 1\"",
"Диаметр отверстия": 30,
"Подходящая номенклатура из 1С": {
"Наименование": "Стоимость сверления отверстия AISI 304 (толщ. 2 мм.) 30",
},
"Цена": "36"
},
"Короткая посадочное слева_снизу": {
"Значение резьбы": "G 1\"",
"Диаметр отверстия": 30,
"Подходящая номенклатура из 1С": {
"Наименование": "Стоимость сверления отверстия AISI 304 (толщ. 2 мм.) 30",
},
"Цена": "36"
}
}
}
Понимаю что должен помочь Reduce, но запутался во вложенности.
var getCollectInformation = data => Object.keys(data).reduce( (result, key) =>{ ... }
/* Object.keys(data) даёт доступ к такой вложенности */
[
"podauschaya_linya_1_kontura_name",
"podauschaya_linya_2_kontura_name",
"podauschaya_linya_rezervnogo_kotla_name",
"obratnaya_linya_rezervnogo_kotla_name"
]
/* Object.keys(data) даёт доступ к такой вложенности */
А дальше идут однотипные объекты, к полям которых можно обращаться по именам.
Также можно воспользоваться методом Object.values
, который сразу возвращает значения объекта, а не только ключи.
Например:
var data = {
"podauschaya_linya_1_kontura_name": {
"Короткая посадочное": {
"Значение резьбы": "G 1\"",
"Диаметр отверстия": 30,
"Подходящая номенклатура из 1С": {
"Наименование": "Стоимость сверления отверстия AISI 304 (толщ. 2 мм.) 30",
},
"Цена": "36"
}
},
"podauschaya_linya_2_kontura_name": {
"Короткая посадочное": {
"Значение резьбы": "G 1\"",
"Диаметр отверстия": 30,
"Подходящая номенклатура из 1С": {
"Наименование": "Стоимость сверления отверстия AISI 304 (толщ. 2 мм.) 30",
},
"Цена": "36"
}
},
"podauschaya_linya_rezervnogo_kotla_name": {
"Короткая посадочное": {
"Значение резьбы": "G ¾\"",
"Диаметр отверстия": 25,
"Подходящая номенклатура из 1С": {
"Наименование": "Стоимость сверления отверстия AISI 304 (толщ. 2 мм.) 25",
},
"Цена": "30"
}
},
"obratnaya_linya_rezervnogo_kotla_name": {
"Короткая посадочное": {
"Значение резьбы": "G ¾\"",
"Диаметр отверстия": 25,
"Подходящая номенклатура из 1С": {
"Наименование": "Стоимость сверления отверстия AISI 304 (толщ. 2 мм.) 25",
},
"Цена": "30"
}
},
}
var res = Object.values(data).reduce((result, val) => {
var obj = val["Короткая посадочное"];
// для случае если имя "Короткая посадочное" может меняться
// var obj = Object.values(val)[0];
// либо с помощью `for`
// var obj;
// for(var i in val) {
// obj = val[i];
// break;
//}
var key = obj["Подходящая номенклатура из 1С"]["Наименование"];
if (!result[key]) {
result[key] = {
'Количество вхождений в объекте': 1,
"Значение резьбы": obj["Значение резьбы"],
'Цена': obj['Цена'],
};
} else {
result[key]['Количество вхождений в объекте'] += 1;
}
return result;
}, {});
console.log(res);
var data = {
"podauschaya_linya_1_kontura_name": {
"Короткая посадочное": {
"Значение резьбы": "G 1\"",
"Диаметр отверстия": 30,
"Подходящая номенклатура из 1С": {
"Наименование": "Стоимость сверления отверстия AISI 304 (толщ. 2 мм.) 30",
},
"Цена": "36"
}
},
"podauschaya_linya_2_kontura_name": {
"Короткая посадочное": {
"Значение резьбы": "G 1\"",
"Диаметр отверстия": 30,
"Подходящая номенклатура из 1С": {
"Наименование": "Стоимость сверления отверстия AISI 304 (толщ. 2 мм.) 30",
},
"Цена": "36"
}
},
"podauschaya_linya_rezervnogo_kotla_name": {
"Короткая посадочное": {
"Значение резьбы": "G ¾\"",
"Диаметр отверстия": 25,
"Подходящая номенклатура из 1С": {
"Наименование": "Стоимость сверления отверстия AISI 304 (толщ. 2 мм.) 25",
},
"Цена": "30"
}
},
"obratnaya_linya_rezervnogo_kotla_name": {
"Короткая посадочное": {
"Значение резьбы": "G ¾\"",
"Диаметр отверстия": 25,
"Подходящая номенклатура из 1С": {
"Наименование": "Стоимость сверления отверстия AISI 304 (толщ. 2 мм.) 25",
},
"Цена": "30"
}
},
};
var data1 = {};
for (var key in data) {
var subkey = Object.keys(data[key])[0];
var key1 = data[key][subkey]["Подходящая номенклатура из 1С"]["Наименование"];
if (data1[key1]) {
data1[key1]["Количество вхождений в объекте"] += 1;
} else {
data1[key1] = {
"Количество вхождений в объекте": 1,
"Значение резьбы": data[key][subkey]["Значение резьбы"],
"Цена": data[key][subkey]["Цена"]
};
}
}
console.log(data1);
Виртуальный выделенный сервер (VDS) становится отличным выбором
Не могу разобраться, autoNumeric работает только на первый элемент содержащий класс float, как сделать что бы сработало на всех элементах имеющих...
Возможно ли запустить 2 PlayerEndpoint с разными ссылками на одной странице? https://doc-kurentoreadthedocs