Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/446.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/1/visual-studio-2012/2.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 将CSV字符串转换为不带.split()的数组_Javascript_Parseint - Fatal编程技术网

Javascript 将CSV字符串转换为不带.split()的数组

Javascript 将CSV字符串转换为不带.split()的数组,javascript,parseint,Javascript,Parseint,我正在尝试提出一个函数,该函数不使用.split()就可以接受任何字符串并输出数字和字符串数组。下面是它需要通过的测试和当前通过测试的函数。我很好奇其他人会如何解决这个问题 function csvParse(inputString) { var outputArray = []; var inputArray = inputString.split(','); for (var i =0; i < inputArray.length; i++) { if (!

我正在尝试提出一个函数,该函数不使用
.split()
就可以接受任何字符串并输出数字和字符串数组。下面是它需要通过的测试和当前通过测试的函数。我很好奇其他人会如何解决这个问题

function csvParse(inputString) {
   var outputArray = [];
   var inputArray = inputString.split(',');
   for (var i =0; i < inputArray.length; i++) {
     if (!Number.isNaN(+inputArray[i])) {
       outputArray.push(+inputArray[i]);
   } else {
     outputArray.push(inputArray[i].replace(/['"]+/g,'').trim());
   }
   }
   return outputArray;
};

describe('CSV Parse', function() {
  it('should parse a string of integers correctly', function() {
    var input = '3,7,9,1,25';
    var output = [ 3, 7, 9, 1, 25 ];
    expect(csvParse(input)).to.deep.equal(output);
  });
  it('should parse a string of strings correctly', function() {
    var input = '"3","7","9","1","25"';
    var output = ["3", "7", "9", "1", "25"];
    expect(csvParse(input)).to.deep.equal(output);
  });
  it('should parse a string of integers and strings correctly', function() {
    var input = '1, "one", 2, "two", 3, "three"';
    var output = [1, "one", 2, "two", 3, "three"];
    expect(csvParse(input)).to.deep.equal(output);
  });
});
函数csvParse(inputString){
变量输出阵列=[];
var inputArray=inputString.split(',');
for(变量i=0;i

split
是一个不错的选择。但这就是你想要的答案。

基本的JS解决方案只是按照你的要求替换split方法(fiddle)

函数dumbComaSplit(inputString){
var strArray=[];
var tmpStr=“”;
对于(变量i=0;i
我会用
拆分
来解决这个问题。如果存在语言功能,为什么不使用它,而不是滚动您自己的、很可能已损坏的实现?不要重新发明轮子…:)听起来像是一项任务。如果您自己不这样做,您将如何解释您在代码中做出这些决定的原因。
function dumbComaSplit(inputString) {
   var strArray = [];
   var tmpStr = "";
   for (var i = 0; i < inputString.length; i++) {
        if (inputString.charAt(i) == ',') {
            strArray.push(tmpStr);
            tmpStr = "";
            continue;
        }
        tmpStr += inputString.charAt(i);
    }
    strArray.push(tmpStr);
    return strArray;
};

function csvParse(inputString) {
   var outputArray = [];
   var inputArray = dumbComaSplit(inputString);
   for (var i =0; i < inputArray.length; i++) {
     if (!Number.isNaN(+inputArray[i])) {
       outputArray.push(+inputArray[i]);
   } else {
     outputArray.push(inputArray[i].replace(/['"]+/g,'').trim());
   }
   }
   return outputArray;
};