我在这样的输入中有一个值:
7*7*0*0*32*17
我做一个简单的.split('*')来获取以下数组:
["7","7","0","0","32","17"]
然后我使用.map(Number)将数组转换为数字,因此数组现在不是由字符串组成,而是由数字组成:
[7,7,0,0,32,17]
我感兴趣的是第二个7.我使用.slice(1,2)来单独选择它。在此之前,它有效:
[7]
我的问题是,我无法添加+1以将7转换为8.而是返回71.
让我们调用[“7”,“7”,“0”,“0”,“32”,“17”]的数组 - > “myArray”简化了整个过程。
console.log(myArray);
var myArrayMapped = myArray.map(Number);
console.log(myArrayMapped);
var myArraySliced = myArrayMapped.slice(1,2);
console.log(myArraySliced);
var myArrayIncreased = myArraySliced + 1;
console.log(myArrayIncreased);
这将是console.logs的结果:
["7","7","0","0","32","17"]
[7,7,0,0,32,17]
[7]
71
一切都按预期工作,直到这一行不起作用:
var myArrayIncreased = myArraySliced + 1;
请注意,我的最终目标是将8放回输入中,并将数组重建为一个单独的字符串,如下所示,所以可能有一个我没见过的更简单,更快速的解决方案。基本上,一个按钮会调用一个函数来为我想要选择的值的非常特定的部分添加+1(第二个“7”):
自:
7*7*0*0*32*17
要:
7*8*0*0*32*17
提前致谢。请注意,我不想总结所有数组,也不想在我得到的数组中推出一个新数组(这是我通过研究看到的主题,这对我没有帮助)。我只想用一个特定的数组做数学。
答案 0 :(得分:2)
您没有添加1到7,而是在具有单个索引的数组中添加一个。
var myArrayIncreased = myArraySliced + 1;
//var myArrayIncreased = [7] + 1;
如果要进行添加,则需要使用第一个索引
var myArrayIncreased = myArraySliced[0] + 1;
//var myArrayIncreased = 7 + 1;
答案 1 :(得分:1)
您可以使用它的数组索引
来选择它,而不是使用slice
myArrayMapped[1] += 1;
将产生最终代码
var myArray = ["7","7","0","0","32","17"];
console.log(myArray);
var myArrayMapped = myArray.map(Number);
console.log(myArrayMapped);
myArrayMapped[1] += 1;
console.log(myArrayMapped);
答案 2 :(得分:1)
您正在添加[7]
1
而不是7
与1
[7]+1 = '71'
在将数字数组切成并得到[7]后,您应该参考元素的内容:
var myArrayIncreased = myArraySliced.map(function(n){return n+1});
console.log(myArrayIncreased);
答案 3 :(得分:0)
执行:
var myArrayIncreased = 1*myArraySliced + 1;