JavaScript数组map函数如何确定当前项的长度和索引

4
我有一个JS代码片段,可以生成一个包含下列 td 的表格行:
                    var cols = this.props.cols;
                    data = this.state.data

                    return data.map(function (item) {
                        var cells = cols.map(function (colData) {
                            console.log(colData);
                            return <td>{item[colData.key]}</td>;
                        });


                        return <tr key={item.Id }>{cells}</tr>;
                    });

我想确定最后一列,并在特定的 td 上添加一个按钮。如何获得 cols.map(function(coldata) 中单元格的长度,我不确定是否能够通过这种方法实现。


想要在cols.map(function(coldata))中获取cells.length。 - 0x12
那么 cols.length 应该有所帮助。 - Rayon
2个回答

4
像这样的代码应该可以工作。正如yaycmyk提到的,您的map函数可以接受3个参数...
 1. the iterated item
 2. the index of the item
 3. the array that is being iterated on.

我只是将索引与长度-1进行比较。
                return data.map(function (item) {
                    var cells = cols.map(function (colData, idx, arr) {
                         return (idx === arr.length -1)
                               ? <td><button /></td>
                               : <td>{item[colData.key]}</td>;
                    });


                    return <tr key={item.Id }>{cells}</tr>;
                });

3

Map函数注入了两个你目前没有使用的参数。完整的回调签名是(element,index,wholeArray)。然后,你可以在数组上调用.length并将其与当前元素索引进行比较。


谢谢您接受了其他人的答案,它和我的一样,甚至说了这一点。 :p - probablyup

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接