更新
这里的思路是过滤掉数字,比如小于10或(小于等于10)或大于10或(大于等于10)的数字。
当用户输入像“显示所有小于或等于10的数字”这样的值时(输入将为<=10
),我们的想法是使用比较过滤数组中的数字,当匹配特定数字时。
备注:v应该像这样<5或<10或<=3或<=2或>5或>=6等等...
nums.filter(num => {
return comparisions.map(operation => {
if (v.startsWith('>'))
return num > parseInt(v.replace('>', '').trim());
if (v.startsWith('>='))
return num >= parseInt(v.replace('>=', '').trim());
if (v.startsWith('<='))
return num <= parseInt(v.replace('<=', '').trim());
if (v.startsWith('<'))
return num < parseInt(v.replace('<', '').trim());
})
})
如何将上述重复内容整合为以下函数?
const comparisions = ['<', '<=', '>', '>=']
const nums = [3, 2, 1, 5, 6, 10]
// here I've shown only few a numbers for simplicity. In real it is a big array of nos.
nums.filter(num => {
return comparisions.map(operation => {
if (v.startsWith(operation))
return num operation parseInt(v.replace(operation, '').trim());
})
})
//example v = '<=10'
更新 请不要使用 eval() 函数。我不喜欢使用 eval 函数。