2 回答

TA貢獻(xiàn)1852條經(jīng)驗 獲得超7個贊
將函數(shù)表示為字符串是可能的,但既危險又丑陋。這通常需要eval方法或函數(shù)構(gòu)造函數(shù),這兩者都是不受歡迎的。
相反,由于您沒有說將函數(shù)存儲為字符串是必需的,因此我建議將函數(shù)存儲為函數(shù)。
let forceRule1 = obj => obj.mass * obj.acceleration;
let forceRule2 = obj => obj.mass + obj.acceleration;
let forceData = [
{
'mass': 5,
'acceleration': 2,
'ruleToCalculateForce': forceRule1
}, {
'mass': 5,
'acceleration': 3,
'ruleToCalculateForce': forceRule2
}
];
forceData.forEach(obj => obj.resultForce = obj.ruleToCalculateForce(obj));
console.log(forceData);
編輯,根據(jù)評論,規(guī)則必須是字符串。在這種情況下,使用 eval 或函數(shù)構(gòu)造函數(shù)可以工作:
let forceData = [
{
'mass': 5,
'acceleration': 2,
'ruleToCalculateForce': 'mass * acceleration'
},
{
'mass': 5,
'acceleration': 3,
'ruleToCalculateForce': 'mass + acceleration'
}
];
forceData.forEach(obj => obj.result =
new Function('mass', 'acceleration', `return ${obj.ruleToCalculateForce}`)(obj.mass, obj.acceleration));
console.log(forceData);

TA貢獻(xiàn)1895條經(jīng)驗 獲得超7個贊
從樣本數(shù)據(jù)和描述來看,我猜你只有一種規(guī)則要計算?然后你可以使用這個:
forceData.forEach(element => {
element["result"] = element.mass * element.acceleration;
});
此外,在這種情況下,您不需要將規(guī)則存儲在對象中。
但是,如果您有任何其他規(guī)則,并在此處提供,我可以編輯代碼。
希望能幫助到你,
添加回答
舉報