function resolve({
  columns,
  method = () => rowData => rowData,
  indexKey = '_index'
}) {
  if (!columns) {
    throw new Error('resolve - Missing columns!');
  }

  return (rows = []) => {
    const methodsByColumnIndex = columns.map(column => method({ column }));

    return rows.map((rowData, rowIndex) => {
      let ret = {
        [indexKey]: rowIndex,
        ...rowData
      };

      columns.forEach((column, columnIndex) => {
        const result = methodsByColumnIndex[columnIndex](rowData);

        delete result.undefined;

        ret = {
          ...ret,
          ...result
        };
      });

      return ret;
    });
  };
}

export default resolve;

function resolve({
  columns,
  method = () => rowData => rowData,
  indexKey = '_index'
}) {
  if (!columns) {
    throw new Error('resolve - Missing columns!');
  }

  return (rows = []) => {
    const methodsByColumnIndex = columns.map(column => method({ column }));

    return rows.map((rowData, rowIndex) => {
      let ret = {};

      columns.forEach((column, columnIndex) => {
        const result = methodsByColumnIndex[columnIndex](rowData);

        delete result.undefined;

        ret = {
          [indexKey]: rowIndex,
          ...rowData,
          ...ret,
          ...result
        };
      });

      return ret;
    });
  };
}

export default resolve;

--- 
+++ 
@@ -11,7 +11,10 @@
     const methodsByColumnIndex = columns.map(column => method({ column }));
 
     return rows.map((rowData, rowIndex) => {
-      let ret = {};
+      let ret = {
+        [indexKey]: rowIndex,
+        ...rowData
+      };
 
       columns.forEach((column, columnIndex) => {
         const result = methodsByColumnIndex[columnIndex](rowData);
@@ -19,8 +22,6 @@
         delete result.undefined;
 
         ret = {
-          [indexKey]: rowIndex,
-          ...rowData,
           ...ret,
           ...result
         };
Set indexKey once per row, not per column.

The performance improvement depends on the number of columns, but on a
real data set of 5000 rows and 11 resolved columns this improves
performance by 8.7%.

This does not change the result since the order of keys in the spread is
unchanged.
