带有拼接的javascript中的映射函数

Map function in javascript with splice

本文关键字:映射函数 javascript 拼接      更新时间:2023-09-26

谁能解释一下当我们传递2,0,1时,这个函数是如何返回[0,1]

function processData(input) {
   var parse_fun = function (s) { return parseInt(s, 10); };    
   var lines = input.split(''n');
    console.log(lines)
   var T = parse_fun(lines.shift());
    console.log(T)
    var data = lines.splice(0, T).map(parse_fun);
    console.log(data);    
}

混淆这条线的部分。

var data = lines.splice(0, T).map(parse_fun);
console.log(data);

lines.splice(0,T)还我[][].map(parse_fun)怎么会回来[0,1]

假设输入"2'n0'n1"

考虑一下lines.shift()做什么,

  • 它从lines中删除第一项,并通过1减少所有其他指示
  • 它返回现在删除的第一项lines

因此,在您的情况下,2被返回,lines变得["0", "1"]

接下来,考虑lines.splice(0, 2)的作用

  • 它从lines中删除2项,从索引0开始
  • 它返回已删除项的数组

因此,在您的情况下,["0", "1"]被返回,lines变得[]

最后,您将数组["0", "1"]映射到以数字为基数10,并得到[0, 1]

lines.splice(0,T)还给我[]

不,它没有。它将产生["0", "1"].但是splice也会从lines数组中删除这些项目,这意味着如果你调用它两次(例如,一次用于映射,一次用于调试),第二次尝试将返回空数组。您应该考虑改用slice