javascript - 如何在 ReactJS 组件对象数组中插入元素(在现有元素之间)

标签 javascript arrays 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);

关于javascript - 如何在 ReactJS 组件对象数组中插入元素(在现有元素之间),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53870846/

相关文章:

javascript - 将 Node.js 应用部署到 Firebase

c - 在 char 数组中存储多个整数

javascript - 如何在成帧器运动中多次使用动画

c++ - 打印没有索引 cpp 的字符数组时出错

javascript - 如何更新嵌套数组(多重 react 选择)

javascript - 何时使用 React 错误边界组件?

javascript - 将数组值与each() jquery中的索引值进行比较

javascript - 在 setInterval 运行时使用 clearInterval

javascript - OpenLayers 3 Vector 缩放错误位置

javascript - jQuery 相当于 Prototype collect 和 map 函数?