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

时间:2016-07-28 05:12:51

标签: javascript jquery html

我有一个js片段,用

生成一个表格行

td s如下

                    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中的单元格长度(函数(coldata)。嗯不确定这种方法是否能够实现它

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:2)

这样的事情会起作用。正如yaycmyk所提到的,你的地图功能可能需要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>;
                });