javascript - 如何在 ReactJS 组件对象数组中插入元素(在现有元素之间)
问题描述
<FilterGroup /
我有一个> 对象数组。我想在除最后一个对象之外的<Conjunction />
每个对象之后插入一个对象。<FilterGroup>
所以数组应该来自:
[
<FilterGroup />
<FilterGroup />
<FilterGroup />
<FilterGroup />
]
至:
[
<FilterGroup />
<Conjunction />
<FilterGroup />
<Conjunction />
<FilterGroup />
<Conjunction />
<FilterGroup />
]
到目前为止,我的尝试使我:
filterGroups.filter(function(filterGroup, index) {
if(index !== filterGroups.length-1){
filterGroups.push(<Conjunction key={index} />);
}
})
我需要替换push()
,因为它将元素附加到数组的末尾。
解决方案
通常的类似 React 的方法是创建一个新数组:
const result = [];
for (const entry of original) {
if (result.length > 0) {
result.push("<Conjunction />");
}
result.push(entry);
}
使用字符串而不是元素的示例:
var original = [
"<FilterGroup />",
"<FilterGroup />",
"<FilterGroup />",
"<FilterGroup />"
];
const result = [];
for (const entry of original) {
if (result.length > 0) {
result.push("<Conjunction />");
}
result.push(entry);
}
console.log(result);
(是的,您可以将其插入reduce
调用中,因为任何数组操作都可以插入reduce
调用中,但它不会为您带来任何好处。)
但是,如果要修改现有数组,可以使用splice
:
for (let i = theArray.length - 1; i > 0; --i) {
theArray.splice(i, 0, "<Conjunction />");
}
使用字符串而不是元素的示例:
var theArray = [
"<FilterGroup />",
"<FilterGroup />",
"<FilterGroup />",
"<FilterGroup />"
];
for (let i = theArray.length - 1; i > 0; --i) {
theArray.splice(i, 0, "<Conjunction />");
}
console.log(theArray);
推荐阅读
- c# - 如何使用 C# 在 Windows 应用程序中使用 SaveFileDialog 在来自 HttpClient 的本地计算机上保存 Zip 文件?
- ms-office - Excel Open XML - 黑底白字 - 颜色在哪里定义?
- reactjs - 在移动视图中,为什么抽屉没有从反应钩子中的 appBar iconButton (material-ui) 打开?
- installation - 在 Inno Setup 的屏幕中央显示启动画面
- java - 添加paintComponents()后不出现背景
- r - 在R中重新排列/数据框
- php - 如何为 PHPDoc 的 @return 指明非常具体的值?
- sql - 在收入账户表中识别所有还没有账户名的账户
- flutter - 浏览器客户端中的 send 方法在 Flutter Web 应用程序中产生错误
- angular - 在服务器端禁用事件、UIEvent、HTMLEvent