想象一下:我有一个数组:["1", "2", "X", ".", "4", "3", "Z", "-", "12"];
我认为我应该使用哪种功能:
因此,转换后的数组的结果应为:["1", "2",".", "4", "3", "-", "12"];
我不想要你的代码,只是建议/帮助如何启动它。
感谢您的回复和帮助。
答案 0 :(得分:2)
你可以检查数组中是否有两个NaN值。
var array = ["1", "2", "X", ".", "4", "3", "Z", "-", "12"],
result = array.filter((v, i, a) => !isNaN(v) || !isNaN(a[i + 1]));
console.log(result);
答案 1 :(得分:1)
您可以使用for循环迭代数组并跟踪current
和previous
元素。
然后,您可以使用 isNaN 检查这两个值是否为NaN
。
如果两者都是NaN
,您可以使用 splice 删除索引i-1
上的项目(相当于previous
):
arr = ["1", "2", "X", ".", "4", "3", "Z", "-", "12"];
var previous = null;
for (var i = 0; i < arr.length; i++) {
var current = arr[i];
if(isNaN(previous) && isNaN(current)) {
arr.splice(i-1, 1);
}
previous = current;
}
console.log(arr); //[ '1', '2', '.', '4', '3', '-', '12' ]
&#13;
答案 2 :(得分:1)
您可以使用Array#filter查找当前和下一项是NaN
。
const data = ["1", "2", "X", ".", "4", "3", "Z", "-", "12", "END"];
const result = data.filter((c, i, arr) => i + 1 === arr.length || !(isNaN(c) && isNaN(arr[i + 1])));
console.log(result);
&#13;
答案 3 :(得分:0)
您可以递归地执行此操作:
if(sameDate($firstDateTimeObj, $secondDateTimeObj, $ThirdDateTimeObj))
{
// your code
}
function sameDate (DateTime ...$dates) {
foreach($dates as $date)
{
$test[] = $date->format('Ymd');
}
$result = array_unique($test);
if(count($result) == 1)
{
return true;
{
return false;
}
array.prototype.findIndex 的可读方式:
var arr = ["1", "2", "X", ".", "4", "3", "Z", "-", "12"];
var i = 0;
function removeFirstNan (arr) {
for (var i = 0; i < arr.length; i++) {
if (isNaN(arr[i]) && isNaN(arr[i + 1])) {
var newArr = [ ...arr.slice(0, i), ...arr.slice(i + 1, arr.length) ];
return removeFirstNan(newArr);
}
}
return arr;
}
arr = removeFirstNan(arr);
console.log(arr);