首页 > 解决方案 > 如何准备数据字符串但字符串不以null结尾

问题描述

我想让数据集像(11,22) , (11,22,33) , (11,22,33,44) , (11,null,33,44),(11,null,null,44),(11,null,33)

但它不应以 null 结尾。(意味着 dataSet 字符串不应该(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)

标签: javascriptjqueryajaxstringnull

解决方案


不确定这是否是最好的答案,但它可以工作:
这会将所有元素放入一个数组中>>如果为空,则删除最后几个元素>>格式

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

输出:
(11,null,33)
(11,null,null,44)
(11,22)


推荐阅读