我想制作像 (11,22) , (11,22,33) , (11,22,33,44) , (11,null,33,44),(11,null ,null,44),(11,null,33)
但它不应该以 null 结尾。
(意味着数据集字符串不应该像这样 (11,22,null,null)
)。
hpVal=11, outputRpmVal=22,ratioVal=33,outputSpeedVal=44
假设上述值将传入 arrayPrepareFunction。有人可以帮我制作像上面提到的格式一样的数据集字符串吗?
在设置数组时,不应使用else if
。
动态数据将来自用户端。我将附上屏幕截图。根据用户选择值将会改变。
这是选择框顺序hpVal
、outputRpmVal
、ratioVal
、outputSpeedVal
。
例如:如果用户选择:
(hpVal=11,outputRpmVal=null,ratioVal=33)
数据集应类似于 (11,null,33)
。
如果用户选择:
(hpVal=11,outputRpmVal=null,ratioVal=null,outputSpeedVal=44)
数据集应类似于 (11,null,null,44)
。
如果用户选择:
(hpVal=11,outputRpmVal=22,ratioVal=null,outputSpeedVal=null)
数据集应类似于 (11,22)
。
var dataSet,avoid=",null";
function arrayPrepareFunction(hpVal,outputRpmVal,ratioVal,outputSpeedVal){
dataSet="("+hpVal+","+outputRpmVal+","+ratioVal+","+outputSpeedVal+")";
dataSet = dataSet.replace(avoid,'');
if(dataSet.indexOf(avoid) != -1){
dataSet = dataSet.replace(avoid,'');
}
console.log(dataSet);
}
arrayPrepareFunction(11,null,33)
arrayPrepareFunction(11,null,null,44)
arrayPrepareFunction(11,22,null,null)
最佳答案
如果您想从所有传递的参数构造一个字符串,并避免在字符串
的最后出现null
,最好的解决方案是将输入视为一个数组
,检查null
项,然后将此数组
转换为字符串
。
这就是您的代码:
function arrayPrepareFunction(hpVal, outputRpmVal, ratioVal, outputSpeedVal) {
dataSet = Object.values(arguments);
var i = dataSet.length;
while (dataSet[i - 1] == null && i > 0) {
dataSet.pop();
i--;
}
dataSet = "(" + dataSet.map(a => a == null ? "" + a : a).join(", ") + ")";
console.log(dataSet);
}
- 它使用
Object.values(arguments)
来获取输入参数 作为数组。 - 如果
数组
的最后一项为null
,则不断删除它。 - 然后将此
数组
转换为字符串
。
演示:
var dataSet, avoid = ",null";
function arrayPrepareFunction(hpVal, outputRpmVal, ratioVal, outputSpeedVal) {
dataSet = Object.values(arguments);
var i = dataSet.length;
while (dataSet[i - 1] == null && i > 0) {
dataSet.pop();
i--;
}
dataSet = "(" + dataSet.map(a => a == null ? "" + a : a).join(", ") + ")";
console.log(dataSet);
}
arrayPrepareFunction(11, null, 33)
arrayPrepareFunction(11, null, null, 44)
arrayPrepareFunction(11, 22, null, null)
关于javascript - 如何准备数据字符串但字符串不以null结尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51443681/