Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/370.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 如何变换数组?_Javascript_Arrays - Fatal编程技术网

Javascript 如何变换数组?

Javascript 如何变换数组?,javascript,arrays,Javascript,Arrays,我有以下任务: 您的任务是实现函数transform(arr),该函数根据arr包含的控制序列获取一个数组并返回转换后的数组。控制序列是所述数组的定义字符串元素: --discard next从转换后的数组中排除数组的下一个元素 --discard prev从转换后的数组中排除数组的上一个元素 --double next将转换数组中的数组的下一个元素加倍 --double prev将转换数组中数组的上一个元素加倍 例如: transform([1, 2, 3, '--double-next'

我有以下任务:

您的任务是实现函数
transform(arr)
,该函数根据
arr
包含的控制序列获取一个数组并返回转换后的数组。控制序列是所述数组的定义字符串元素:

  • --discard next
    从转换后的数组中排除数组的下一个元素
  • --discard prev
    从转换后的数组中排除数组的上一个元素
  • --double next
    将转换数组中的数组的下一个元素加倍
  • --double prev
    将转换数组中数组的上一个元素加倍
例如:

transform([1, 2, 3, '--double-next', 4, 5]) => [1, 2, 3, 4, 4, 5]

transform([1, 2, 3, '--discard-prev', 4, 5]) => [1, 2, 4, 5]
该函数不得影响初始数组。控制顺序从左到右应用。控制序列不属于转换的数组。初始数组中的控制序列不在一行中出现。如果控制序列旁边没有可以应用它的元素,则它不执行任何操作。如果
arr
不是
数组,则函数应抛出
错误

我编写了以下代码:

let transform=函数(arr){
for(设i=0;i[1, 2, 3, 4, 4, 5]

log(转换([1,2,3'--discard prev',4,5]);//=>[1,2,4,5]
您可以将值平面映射,并对所需转换的前后进行查看

let transform=array=>array.flatMap((v,i,a)=>{
如果(a[i+1]='--discard prev')返回[];
if(a[i-1]='--double next')返回[v,v];
如果(a[i+1]='--double prev')返回[v,v];
if(v.toString().startsWith('--d'))返回[];
返回v;
});
log(…转换([1,2,3'--double next',4,5]);//[1, 2, 3, 4, 4, 5]
log(…转换([1,2,3'--discard prev',4,5]);//[1, 2, 4, 5]
log(…转换([1,2,3'--double prev',4,5]);//[1,2,3,3,4,5]
使用
.join(',')将删除新行或删除
.split(',')

let transform=函数(arr){
for(设i=0;i[1, 2, 3, 4, 4, 5]

log('[',transform([1,2,3'--discard prev',4,5]),']');//=>[1,2,4,5]
“它有什么问题?”它似乎适用于问题陈述中的示例。你能给我们举个例子说明它不起作用吗?为什么你要把部分转换成字符串,然后再拆分它?它似乎起作用,但当我运行测试时,它-不能正确处理空数组-影响简单数组-基本序列交互不能正常工作-高级序列交互不能正常工作-控制序列不能正常工作