javascript - 拼接数组是一个空值
问题描述
我正在使用此代码从 React Native 中的 Array 中删除一个项目:
var array = [...this.state.gallery];
if (index !== -1) {
array.splice(index, 1);
this.setState({gallery: array,
photosHaveNow: this.state.photosHaveNow - 1});
}
但是,当 item 被删除时,该数组将写入您的位置:
{"empty": true, "key": "blank-2"}
最后一个例子:
["http://parquedasfeiras.online/wp-content/uploads/2019/09/WhatsApp-Image-2019-11-30-at-00.38.33.jpeg", "http://parquedasfeiras.online/wp-content/uploads/2019/09/WhatsApp-Image-2019-11-30-at-00.38.33-1.jpeg", "http://parquedasfeiras.online/wp-content/uploads/2019/09/WhatsApp-Image-2019-11-30-at-00.38.33-2.jpeg", "http://parquedasfeiras.online/wp-content/uploads/2019/09/WhatsApp-Image-2019-11-30-at-00.38.33-3.jpeg", "http://parquedasfeiras.online/wp-content/uploads/2019/09/WhatsApp-Image-2019-11-30-at-00.38.34.jpeg", "http://parquedasfeiras.online/wp-content/uploads/2019/09/WhatsApp-Image-2019-11-30-at-00.38.34-1.jpeg", "http://parquedasfeiras.online/wp-content/uploads/2019/09/WhatsApp-Image-2019-11-30-at-00.38.34-4.jpeg", {"empty": true, "key": "blank-2"}, {"empty": true, "key": "blank-2"}, {"empty": true, "key": "blank-2"}, {"empty": true, "key": "blank-2"}, {"empty": true, "key": "blank-2"}]
当通过拼接删除一个项目时,“{”empty“:true”,key“:”blank-2“}”被放置到位,我希望没有放置任何东西。
解决方案
我相信我已经找到了解决办法。不知道好不好听
var array = [...this.state.gallery];
if (index !== -1) {
array.splice(index, 1);
}
var finalArray = [];
array.forEach(element => {
if(typeof element !== 'object')
{
finalArray = finalArray.concat(element)
}
})
this.setState({
gallery: finalArray,
photosHaveNow: this.state.photosHaveNow - 1
})
推荐阅读
- c# - 如何使用反射遍历类型 T 层次结构的未知对象,获取所有类类型,然后使用 C# 将它们添加到 EF 核心 DbContext?
- javascript - 如何实现与本示例 html/css/js 相同的卡片视图块?
- css - 如何使用:hover 增加课程的选择性?
- c# - 从实体集合属性中删除添加项目,并从其他列表中删除项目 ID
- javascript - 为什么二维数组在生成后被重写
- javascript - 无法读取未定义函数的属性“目标”删除不起作用
- azure - 有没有办法使用 PowerShell 检索 Azure AD 应用程序的客户端密码?
- r - 如何在 str_detect 中为正则表达式模式包含一个空格
- shell - varchar 字段中 Shell 脚本序列中的 SQL 加载器
- android - 低功耗蓝牙 API ConnectGatt() 函数在 non-airplane_mode 中存在问题