Javascript 使用映射函数填充的reactJS动态下拉列表

Javascript 使用映射函数填充的reactJS动态下拉列表,javascript,reactjs,Javascript,Reactjs,我试图呈现一个简单的下拉列表,数字从1到100。我创建了一个对象,其中数组是它唯一的元素。我用一个值填充每个数组元素,然后尝试映射对象以生成下拉项。这是我正在执行的代码: renderPercent = () => { let obj = { array: [] }; for (var l=0;l<100;l++){ obj.array[l] = l+1; } console.log("obj: ", obj);

我试图呈现一个简单的下拉列表,数字从1到100。我创建了一个对象,其中数组是它唯一的元素。我用一个值填充每个数组元素,然后尝试映射对象以生成下拉项。这是我正在执行的代码:

renderPercent = () => {
    let obj = {
        array: []
    };
    for (var l=0;l<100;l++){
        obj.array[l] = l+1;
    }
    console.log("obj: ", obj);
    let optionItems = obj.array.map((item) =>
        <option key={item}>{item}</option>
    );
    return (
        <div>                
            <div className="row">
                <div className="col-9 text-left">
                    <label>Select the percent to transfer</label>
                </div>
                <div className="col-2 text-left">
                    <select>
                        {optionItems}
                    </select>
                </div>
                <div className="col-1 text-left">
                    <label>&nbsp;</label>
                </div>
            </div>
        </div>
    )
}
我按照建议修改了optionItems映射函数。这是渲染此屏幕时现在生成的内容:

如您所见,map函数现在正在填充我的下拉列表。但是,下拉列表位于设备末端下方。当使用开发者工具在Chrome中查看时,这只是一个bug吗?我注意到的另一件事是,下拉列表中的数字比页面重置时的字体大。在我单击下拉箭头之前,值1显示在drowdown中,这是正确的大小,但一旦我展开下拉列表,数字似乎要大得多。为什么会这样


再次感谢stackoverflow社区

如果要在对象而不是数组上进行映射,请修改代码,如下所示:

obj.map((item) =>
应该是

obj["array"].map((item) =>
let optionItems = obj.array.map((item) =>
        <option key={item}>{item}</option>
    );

您可以在console.log中看到这一点。它说{array:[..

您正在做的是在对象上映射,但不是在数组上映射。尝试使用.notation

let optionItems = obj.array.map((item) =>
   <option key={item.array}>{item.array}</option>
);
完整代码

renderPercent = () => {
    let obj = {
        array: []
    };
    for (var l=0;l<100;l++){
        obj.array[l] = l+1;
    }
    return (
        <div>
            <select>
                {obj.array.length > 0 && obj.array.map((item) =>
                    <option key={item.array}>{item.array}</option>
                 )}
            </select>
        </div>
    )
}
obj是一个对象,它没有映射函数。而obj.array是一个具有映射函数的列表

下面的代码

let optionItems = obj.map((item) =>
        <option key={item.array}>{item.array}</option>
    );
应该是

obj["array"].map((item) =>
let optionItems = obj.array.map((item) =>
        <option key={item}>{item}</option>
    );
试试这样的方法:

var percentArray = [];

for (var l=0;l<100;l++){
    percentArray.push(l);
}

let optionItems= percentArray.map(x => `<option key=${x}>${x}</option>`);

...

    return (
        <div>
            <select>
                {optionItems}
            </select>
        </div>
    )
你可以这样做

{Array.from(Array(100), (e, i) => {
    return <option value={i+1}>{i+1}</option>
   }
 )}
我将包含一个从0到100的值,这就是为什么我将它设为i+1