You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ReactJS中如何遍历渲染对象内按序号命名的metadata系列属性

实现方案

你可以利用动态属性名+循环遍历的方式简化代码,因为你的metadata属性遵循固定的序号命名规则,直接遍历1到20的序号即可:

function unflatten(item) {          
    return (
        <div className="metabox">
            {/* 生成1-20的序号数组,遍历所有metadata组 */}
            {Array.from({ length: 20 }, (_, index) => index + 1).map(x => {
                // 动态读取当前序号的激活状态
                const isActive = item[`metadata${x}Active`];
                if (!isActive) return null;
                // 激活状态下返回对应展示内容
                return (
                    <p key={x}>
                        <label className="metadata">{item[`metadata${x}Name`]}</label>: 
                        <label className="metadata">{item[`metadata${x}`]}</label>
                    </p>
                );
            })}
        </div>
    );
}

如果你的metadata组数不固定,后续可能动态增减,也可以用正则匹配所有符合规则的属性来遍历,不需要硬编码总长度:

function unflatten(item) {
    // 匹配所有metadataXActive格式的属性,提取序号
    const metadataIndexes = Object.keys(item)
        .filter(key => /^metadata\d+Active$/.test(key))
        .map(key => key.match(/\d+/)[0]);
        
    return (
        <div className="metabox">
            {metadataIndexes.map(x => {
                const isActive = item[`metadata${x}Active`];
                if (!isActive) return null;
                return (
                    <p key={x}>
                        <label className="metadata">{item[`metadata${x}Name`]}</label>: 
                        <label className="metadata">{item[`metadata${x}`]}</label>
                    </p>
                );
            })}
        </div>
    );
}

内容的提问来源于stack exchange,提问作者Randy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 06:06:04