从 javascript 发出 ajax 调用时删除 JSON 中的键

Deleting a key in JSON while making ajax call from javascript

我是 java 脚本和 ajax 的新手。我有一个 JSON,我想删除此 JSON:

中的输出单元格
{
    "cells": [{
            "metadata": {
                "trusted": true,
                "collapsed": false
            },
            "cell_type": "code",
            "source": "print(\"hi\")",
            "execution_count": 1,
            "outputs": [{
                "output_type": "stream",
                "text": "hi\n",
                "name": "stdout"
            }]
        },
        {
            "metadata": {
                "trusted": true,
                "collapsed": true
            },
            "cell_type": "code",
            "source": "",
            "execution_count": null,
            "outputs": []
        }
    ],
    "metadata": {
        "kernelspec": {
            "name": "Python [Root]",
            "display_name": "Python [Root]",
            "language": "python"
        },
        "anaconda-cloud": {},
        "language_info": {
            "pygments_lexer": "ipython3",
            "version": "3.5.0",
            "codemirror_mode": {
                "version": 3,
                "name": "ipython"
            },
            "mimetype": "text/x-python",
            "file_extension": ".py",
            "name": "python",
            "nbconvert_exporter": "python"
        },
        "gist": {
            "id": "",
            "data": {
                "description": "Untitled5.ipynb",
                "public": true
            }
        }
    },
    "nbformat": 4,
    "nbformat_minor": 0
}

这是我尝试删除输出单元格。这段代码post是上面提到的数据JSON:

 "use strict";

    function _objectWithoutProperties(obj, keys) { 
        var target = {}; 
        for (var i in obj) { 
            if (keys.indexOf(i) >= 0) continue; 
            if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; 
            target[i] = obj[i]; 
        } 
        return target; 
    }
    var outputs = data.cells;
    var data_dup = _objectWithoutProperties(data, ["outputs"]);
    var id_input = $('#gist_id');
    var id = params.gist_it_personal_access_token !== '' ? id_input.val() : '';
    var method = id ? 'PATCH' : 'POST';
    // Create/edit the Gist
    $.ajax({
        url: 'https://api.github.com/gists' + (id ? '/' + id : ''),
        type: method,
        dataType: 'json',
        data: JSON.stringify(data_dup),
        beforeSend: add_auth_token,
        success: gist_success,
        error: gist_error,
        complete: complete_callback
    });
};

但是这段代码不起作用。有人可以指导我们如何直接从 ajax 调用和 post 中剥离一个键(在本例中为输出)到 JSON.

这是 jupyter notebook 的 gist 扩展,我正在尝试剥离输出,同时 post 将其转换为 github

上的 gist
function _objectWithoutProperties(obj, key="outputs") { obj.cells.forEach(cell=>delete(cell[key])); }

如果你使用ES6,你可以使用这个语法删除outputs:

{
  ...data,
  cells: data.cells.map(({ outputs, ...otherProps }) => otherProps),
}

注意:data是你的完整对象。