我们可以使用 eval 动态构建一个字符串并将其推送到构建子数组数组吗?



我们可以使用eval动态构建String并推送它来构建子数组的数组吗?

在下面的代码中,m是传递给处理函数的参数,必须从originalArray中生成m大小的子数组,originalArray可以是任何长度,并且m<originalArray.length

我尝试了以下代码来构建一个动态字符串:correct_m_subarray_String

var dynamic_m_subarray_String = '';
for(var i=0;i<m;i++) {
dynamic_m_subarray_String += `a[i+${i}],`;
}
var correct_m_subarray_String = dynamic_m_subarray_String.substr(0,dynamic_m_subarray_String.length-1).replace('+0','');
//output of above stmt = a[i],a[i+1],a[i+2],a[i+3], m = 4 in this case

代码中的下一个尝试将correct_m_subarray_String推送为tempArray.push([eval(correct_m_subarray_String)]);

tempArray在上面的语句之后应该有m大小的子数组,但这并没有发生,当硬编码为时,同样的事情也会发生

tempArray.push([a[i],a[i+1],a[i+2],a[i+3]]);

不需要eval(),可以使用slice()方法:

tempArray.push(...a.slice(0, m))

最新更新