Javascript 如何删除JS数组中的空尾随值和回车?

Javascript 如何删除JS数组中的空尾随值和回车?,javascript,arrays,Javascript,Arrays,我想从数组中删除尾随的空元素和回车。 例如,我的数组如下所示: 输入arr:[“苹果”,“香蕉”,“番石榴”,“芭蕉”,“芭蕉”,“芭蕉”,“芭蕉”,“芭蕉”,“芭蕉”,“芭蕉”,“芭蕉”,“芭蕉”,“芭蕉”,“芭蕉”,“芭蕉”,“芭蕉”,“芭蕉”,“芭蕉”,“芭蕉”,“芭蕉”,“芭蕉”,“芭 所需输出:[“苹果”、“香蕉”、“番石榴”] 尾随空元素的定义:在最后一个有效元素(“本例中为Guava”)之后,将不会有任何其他有效元素。我认为这里没有什么妙招,只是直接或使用正则表达式循环检查要删除的

我想从数组中删除尾随的空元素和回车。 例如,我的数组如下所示:

输入arr:
[“苹果”,“香蕉”,“番石榴”,“芭蕉”,“芭蕉”,“芭蕉”,“芭蕉”,“芭蕉”,“芭蕉”,“芭蕉”,“芭蕉”,“芭蕉”,“芭蕉”,“芭蕉”,“芭蕉”,“芭蕉”,“芭蕉”,“芭蕉”,“芭蕉”,“芭蕉”,“芭蕉”,“芭

所需输出:
[“苹果”、“香蕉”、“番石榴”]


尾随空元素的定义:在最后一个有效元素(“本例中为Guava”)之后,将不会有任何其他有效元素。

我认为这里没有什么妙招,只是直接或使用正则表达式循环检查要删除的值。例如,要删除空白字符串和
“\r”

实例:

const数组=['''Apple','''Banana','''Guava','','','',''\r'];
while(array.length){//在仍有条目时循环
const last=array[array.length-1];//获取最后一个条目而不删除它
如果(last!==”&&last!==“\r”){//要删除这个吗?
中断;//不,停止
}
--array.length;//是,删除并保持循环
}

console.log(数组)
您可以使用
findLastIndex()
函数(基于此)查找最后一个索引,然后将数组从0切片到最后一个索引+1:

const arr=['''Apple','''Banana','''Guava','','','',''\r'];
函数findLastIndex(数组,谓词){
const index=array.slice().reverse().findIndex(谓词);
返回索引>=0?数组。长度-1-索引:索引;
};
const result=arr.slice(0,findlastinex(arr,o=>o!=''&&o!='='\r')+1);

控制台日志(结果)有很多方法可以解决这个问题,下面是一种使用内置方法定位最后一个有效元素的方法

const inputArr=['''Apple','''Banana','''Guava','','','',''\r'];
const resultar=[…inputArr];
//确定数组元素是否有效
const isValid=el=>(type of el=='string')&&el.length&&el!='\r′;
//查找最后一个有效元素
const lastValid=resultar.reduceRight((iValid、curr、index)=>{
返回伊瓦利德||
(是否有效(当前)?索引:未定义);
},未定义);
//截断数组
if(lastValid!==未定义){
resultar.length=lastValid+1;
}
log(JSON.stringify(resultar))只要找到第一个有效项(…从数组末尾开始迭代…),reducer函数就可以收集任何数组项而无需进一步验证

起始值将是一个
收集器
对象,该对象具有并跟踪减速器功能所需的所有信息,包括
列表
对象,其中将收集所有通过的数组项

函数collectValidItemFromRight(收集器,项){
if(collector.isSkipValidation===true){
收集器.列表.取消移动(项目);
}else if(收集器isValidItem(项目)){
收集器.列表.取消移动(项目);
collector.isSkipValidation=true;
}
回程收集器;
}
console.log(
[''苹果',''香蕉',''番石榴','','','','','\r']
.reduceRight(CollectValidItemRight{
isValidItem:item=>(item!='')和&(item!=''\r'),
名单:[],
}).名单
);
.as控制台包装{最小高度:100%!重要;顶部:0;}
让arr=[''苹果',''香蕉',''番石榴','','',''\r'];
函数删除(数组){
设newArray=[];
设temp=array.join(“”)。replace(/(\r)/,“”)。split(/(?=[A-Z])/;
每小时温度(项目=>{
newArray.push(“”,项);
});
返回(newArray);
}

console.log(删除(arr));//打印[“”、“苹果”、“香蕉”、“番石榴”]
我想你可以试试正则表达式。也许有人知道确切的语法。对于包含空格的字符串值,上述方法失败,例如在
'Banana Shake'
中,例如在这个数组中<代码>[''苹果',''香蕉奶昔',''番石榴','','',''\r']
while (array.length) {                      // Loop while there are still entries
    const last = array[array.length - 1];   // Get the last entry without removing it
    if (last !== "" && last !== "\r") {     // Is this one to remove?
        break;                              // No, stop
    }
    --array.length;                         // Yes, remove and keep looping
}