Актуален ли алгоритм RETE в 2022 году ИЛИ у нас есть лучшие альтернативы, есть ли у нас какие-либо другие стабильные библиотеки правил в JavaScript, кроме nools?
Я работаю с пользовательским вводом, который должен обрабатываться на основе набора правил. Использование nools, но это боль в спине, когда дело доходит до операций JavaScript ES6, таких как IIFE, уменьшение карты, вложенная сортировка.
Разговор об алгоритме RETE в 2022 году может показаться ошеломляющим, но он действительно удобен и имеет смысл. Я использовал nools(который устарел и больше не поддерживается, да!) и он отлично работает, когда вы определяете прямо вперед, когда -> тогда.
Но если я хочу выполнить какую-то операцию JS на выходе, иногда она запускается, а иногда терпит неудачу. Такое поведение заставляет меня думать, что я делаю что-то неправильно ИЛИ оно больше не стабильно (поскольку сейчас активно не поддерживается)
Что я пытаюсь сделать: мои данные имеют очень плохой шаблон DS с вложенными объектами массива и строками вместе.
Данные->
const matchOutput = [
{
X: ['None'],
Y: ['None'],
Z: ['1 mg/m3 STEL'],
A: ['None'],
name: 'AMER'
},
{
X: [
'2 mg/m3 TWA (as Sn) Inhalable fraction.',
'0.2 mg/m3 STEL (as Sn)',
'0.1 mg/m3 TWA (as Sn)'
],
Y: ['0.1 mg/m3 PEL (as Sn)', '0.1 mg/m3 TWA (as Sn)'],
Z: ['None'],
A: ['0.1 mg/m3 REL (as Sn)'],
name: '2-ethylhexanoate;tin(2+)'
},
{
X: ['0.5 mg/m3 TWA (as Hf)'],
Y: ['None'],
Z: ['None'],
A: ['0.5 mg/m3 REL (as Hf)'],
name: 'Hafnium dioxide'
},
{
X: ['300 ppm STEL', '200 ppm STEL'],
Y: ['200 ppm PEL', '300 ppm PEL-STEL', '200 ppm TWA'],
Z: ['None'],
A: ['200 ppm REL', '300 ppm REL'],
name: 'MEK'
}
];
В моем правиле nools я выполняю операцию сортировки, когда она совпадает.
matchOutput.sort(()=>{
exposureControlList.forEach(obj => {
for (let key in obj) {
if (key !== 'name'){
obj[key].sort((a, b) => b.localeCompare(a, 'en', { numeric: true }))});
}
}
exposureControlList.sort((a, b) => a.name.localeCompare(b.name, 'en'));
return exposureControlList;
});
Что должно сортировать внутренний массив в числовые значения desc и внешний массив по ключу
Эта функция сортировки работает нормально, если в файле JS вы помещаете данные и выполняете вышеприведенную функцию сортировки, но в файле .nools она не работает.
Я относительно новичок в nools, поэтому несколько вопросов:
- Я не мог найти какое-либо расширение в VS Code, чтобы увидеть
файл правильно (не в виде простого текста) - Если функция неверна, есть ли способ отладить файл .nools?
- Можете ли вы самостоятельно протестировать файл .nools?
Спасибо за ваше время.