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]
“它有什么问题?”它似乎适用于问题陈述中的示例。你能给我们举个例子说明它不起作用吗?为什么你要把部分转换成字符串,然后再拆分它?它似乎起作用,但当我运行测试时,它-不能正确处理空数组-影响简单数组-基本序列交互不能正常工作-高级序列交互不能正常工作-控制序列不能正常工作