Javascript 如何准备数据字符串但字符串不以null结尾
我想让数据集像Javascript 如何准备数据字符串但字符串不以null结尾,javascript,jquery,ajax,string,null,Javascript,Jquery,Ajax,String,Null,我想让数据集像(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)) 假设上述值将出现在ArrayPrepanction中。有人能帮我把数据集字符串做成上面提到的格式吗 设置数组时,如果,则不应使用else 动态数据将来自用户端。我将附上屏幕截图。根据用户选择值将发生变化 这是选择框顺序hp
(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)
)
假设上述值将出现在ArrayPrepanction中。有人能帮我把数据集字符串做成上面提到的格式吗
设置数组时,如果,则不应使用else
动态数据将来自用户端。我将附上屏幕截图。根据用户选择值将发生变化
这是选择框顺序hpVal
,outputpmval
,ratiova
,outputSpeedVal
例如:如果用户选择:
(hpVal=11,outputpmval=null,ratioVal=33)
数据集应该是这样的(11,null,33)
如果用户选择:
(hpVal=11,outputpmval=null,ratiova=null,outputSpeedVal=44)
数据集应该是这样的(11,null,null,44)
如果用户选择:
(hpVal=11,outputpmval=22,ratiova=null,outputSpeedVal=null)
数据集应该是这样的(11,22)
var数据集,avoid=“,null”;
函数数组修复(hpVal、outputRpmVal、ratioVal、outputSpeedVal){
dataSet=“(“+hpVal+”、“+OutputRPVAL+”、“+ratioVal+”、“+outputSpeedVal+”)”;
dataSet=dataSet.replace(避免“”);
如果(dataSet.indexOf(避免)!=-1){
dataSet=dataSet.replace(避免“”);
}
console.log(数据集);
}
ArrayPreparencation(11,null,33)
ArrayPreparencation(11,null,null,44)
ArrayPreparencation(11,22,null,null)
我的建议是另一种方法:
首先创建一个包含值的数组,比使用包含所有值的字符串更好
然后确保您使用的是字符串“null”
而不是值null
,这将对您的情况有所帮助。(使用.map()
完成此操作)
然后,从后到后循环数组,检查“null”
,如果找到,则从数组中拼接/删除它,如果值不是null,则停止循环,因为它是有效值
要完成此任务,只需使用,
加入阵列,您将获得所需的内容
var数据集;
函数数组修复(hpVal、outputRpmVal、ratioVal、outputSpeedVal){
dataArray=[hpVal,outputpmval,ratiova,outputSpeedVal];
dataArray=dataArray.map(函数(x){
如果(x==null | | typeof x==‘未定义’){
返回“null”;
}否则{
返回x;
}
});
对于(var i=dataArray.length-1;i>=0;i--){
var值=数据数组[i];
如果(值=“空”){
数据阵列拼接(i,1);
}否则{
打破
}
}
var dataSet=“(“+dataArray.join”(“,”+”)”
console.log(数据集);
}
ArrayPreparencation(11,null,33)
ArrayPreparencation(11,null,null,44)
ArrayPreparencation(11,22,null,null)
不确定这是否是最好的答案,但它可以起作用:
这会将所有元素放入一个数组>>如果为null>>格式,则删除最后几个元素
function arrayPrepareFunction(hpVal,outputRpmVal,ratioVal,outputSpeedVal){
let arr = [hpVal, outputRpmVal, ratioVal, outputSpeedVal];
for(let i = arr.length-1; i >= 0; i --){
if(arr[i] == null) {
arr.pop();
}
else {
break;
}
}
let dataSet = '('
for(let i = 0; i < arr.length; i ++) {
dataSet += arr[i] + (i != arr.length - 1? ',': '');
}
dataSet += ')';
console.log(dataSet);
}
arrayPrepareFunction(11,null,33);
arrayPrepareFunction(11,null,null,44);
arrayPrepareFunction(11,22,null,null);
函数数组修复(hpVal、outputRpmVal、ratioVal、outputSpeedVal){
设arr=[hpVal,outputpmval,ratiova,outputSpeedVal];
对于(设i=arr.length-1;i>=0;i--){
如果(arr[i]==null){
arr.pop();
}
否则{
打破
}
}
让数据集='('
for(设i=0;i
输出:
(11,空,33)
(11,空,空,44)
(11,22)如果您希望从所有传递的参数构造一个字符串,并避免在字符串的最后一个中出现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)
来获取输入参数
作为数组
李>
- 如果
为空,则从数组中删除最后一项
- 然后将此
数组
转换为字符串
演示:
var数据集,avoid=“,null”;
函数数组修复(hpVal、outputRpmVal、ratioVal、outputSpeedVal){
数据集=对象。值(参数);
var i=dataSet.length;
while(数据集[i-1]==null&&i>0){
dataSet.pop();
我--;
}
dataSet=“(“+dataSet.map(a=>a==null?”“+a:a.join(“,”+”)”);
console.log(数据集);
}
ArrayPreparencation(11,null,33)
ArrayPreparencation(11,null,null,44)
ArrayPreparencation(11,22,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);
}