如何在JavaScript数组中重置数组索引

如何在JavaScript数组中重置数组索引,javascript,reactjs,web,firebase,firebase-realtime-database,Javascript,Reactjs,Web,Firebase,Firebase Realtime Database,我正在使用React&Firebase web数据库 在下面的代码中,dbRef指向包含字符串数组的Firebase数据库树。此数组的某些元素已被删除,导致索引为空 [ "0": "first", "1": "next", "6": "skipped indexes 2 - 5" ] 我目前正在做: dbRef.set([...currentList, newItem]) 但是,我希望确保传递给set的数组没有任何null索引。在JS中实现这一点的最佳方法是什么?(如果重要的话,

我正在使用React&Firebase web数据库

在下面的代码中,
dbRef
指向包含字符串数组的Firebase数据库树。此数组的某些元素已被删除,导致索引为空

[
  "0": "first",
  "1": "next",
  "6": "skipped indexes 2 - 5"
]
我目前正在做:

dbRef.set([...currentList, newItem])

但是,我希望确保传递给
set
的数组没有任何
null
索引。在JS中实现这一点的最佳方法是什么?(如果重要的话,我会使用babel)

您可以过滤掉它不再有的条目:

// In ES2015+
theArray = theArray.filter((_, index) => theArray.hasOwnProperty(index));

// In ES5 and earlier
theArray = theArray.filter(function(_, index) { return theArray.hasOwnProperty(index); });
例如:

var theArray=['a','b','c','d'];
删除阵列[2];
log(“before”,JSON.stringify(theArray));
theArray=theArray.filter((u,index)=>theArray.hasOwnProperty(index));

log(“after”,JSON.stringify(theArray))您可以过滤掉不再有的条目:

// In ES2015+
theArray = theArray.filter((_, index) => theArray.hasOwnProperty(index));

// In ES5 and earlier
theArray = theArray.filter(function(_, index) { return theArray.hasOwnProperty(index); });
例如:

var theArray=['a','b','c','d'];
删除阵列[2];
log(“before”,JSON.stringify(theArray));
theArray=theArray.filter((u,index)=>theArray.hasOwnProperty(index));
log(“after”,JSON.stringify(theArray))简单方法

testArray.filter(function(val){return val});
简单方法

testArray.filter(function(val){return val});

您不应该因为试图解决此问题的确切原因而在firebase中存储阵列。看:@MathewBerg,谢谢你指出这一点。我将改为使用对象。您不应该因为试图解决此问题的确切原因而在firebase中存储阵列。看:@MathewBerg,谢谢你指出这一点。我将改为使用对象。谢谢您的回答。使用
hasOwnProperty(index)
比使用
.filter(val=>val)
更好/更安全有什么原因吗?是的,我现在明白了。如果
val
false
,则它将被
过滤器删除。感谢您的回答。使用
hasOwnProperty(index)
比使用
.filter(val=>val)
更好/更安全有什么原因吗?是的,我现在明白了。如果
val
false
,则它将被
过滤器
删除。这也将删除存在但包含
0
NaN
null
未定义的
,或
false
。这也将删除存在但包含
的条目,
0
NaN
null
undefined
,或
false