Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/383.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何准备数据字符串但字符串不以null结尾_Javascript_Jquery_Ajax_String_Null - Fatal编程技术网

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);
}