切片和拼接不处理数组值

时间:2016-02-27 14:23:38

标签: javascript

exp: finalValueArr["4", "4", "+", "2", "2"];

        finalValueArr = finalValue.split("");
        findOpr = finalvaluearr.indexOf("+");

        if(findOpr != null){
        oprPos = parseInt(findOpr);

        FirstOperand = finalvaluearr.splice(0, oprPos);
        SecondOperand = finalvaluearr.splice(1, -1);

这里我试图将两个变量中的数组值除以第一个切片正在工作但最后一个不起作用我也使用切片但是我在第二个变量的最后一个值得到NAN这个问题的任何解决方案请帮助

2 个答案:

答案 0 :(得分:3)

我建议使用Array#slice代替Array#splice,因为切片不会更改数组(如果没有必要)。

Array#indexOf会在找到后返回索引,如果找不到则返回-1

var finalValue = '44+22',
    finalValueArr = finalValue.split(''),
    oprPos = finalValueArr.indexOf('+'),        // result is index, if found, or -1
    operand1,
    operand2;

if (~oprPos) { // checks if oprPos !== -1
    operand1 = finalValueArr.slice(0, oprPos);  // slice instead of splice, it does
    operand2 = finalValueArr.slice(oprPos + 1); // not mutilate the original array
}

document.write('<pre>' + JSON.stringify(finalValueArr, 0, 4) + '</pre>');
document.write('<pre>' + JSON.stringify(operand1, 0, 4) + '</pre>');
document.write('<pre>' + JSON.stringify(operand2, 0, 4) + '</pre>');

答案 1 :(得分:1)

在第finalvaluearr.splice(1, -1)行中,您将-1作为第二个参数传递。这是你的问题,因为这个数字应该是0或正整数 - 在spec

中阅读更多内容

如果您只想从指定位置获取数组中的其余元素:

finalvaluearr.splice(1)