Javascript 如何将变量放入对象的键中?

Javascript 如何将变量放入对象的键中?,javascript,Javascript,我得到了以下信息,并说我输入了四份回购协议[第一、第二、第三、第四] this.getLanguagesFromRepo = function(username, siteAndPassword, repo) { return new Promise((resolve, reject) => { axios.get('https://api.github.com/repos/' + username + '/' + repo + '/languages', {

我得到了以下信息,并说我输入了四份回购协议
[第一、第二、第三、第四]

this.getLanguagesFromRepo = function(username, siteAndPassword, repo) {
    return new Promise((resolve, reject) => {
        axios.get('https://api.github.com/repos/' + username + '/' + repo + '/languages', {
            auth: { username: username, password: siteAndPassword.password}
        })
        .then((response) => {
            resolve({ repo: response.data })
        })
        .catch((error) => {
            reject(error)
        })
    })
}
当它运行时,你可以

{ repo: { JavaScript: ... }}
{ repo: { JavaScript: ... }}
{ repo: { JavaScript: ... }}
{ repo: { JavaScript: ... }}
而不是

{ first: { JavaScript: ... }}
{ second: { JavaScript: ... }}
{ third: { JavaScript: ... }}
{ fourth: { JavaScript: ... }}
{repo:response.data}
有一个问题,它将
repo
解释为函数参数中的单词repo,而不是
repo
变量


如何获取正确的引用?

如果您使用的环境支持该引用,则可以使用较新的对象文字语法:

resolve({ [repo]: response.data })
如果没有,则需要执行以下操作:

var o = {};
o[repo] = response.data;
resolve(o);

如果您使用的是支持它的环境,则可以使用较新的对象文字语法:

resolve({ [repo]: response.data })
如果没有,则需要执行以下操作:

var o = {};
o[repo] = response.data;
resolve(o);

如果使用ES6或ES6,则可以使用计算属性语法:
{[repo]:response.data}

    .then((response) => {
        var repoData = {};
        repoData[repo] = response.data;
        resolve(repoData);
    })

如果使用ES6或ES6,则可以使用计算属性语法:
{[repo]:response.data}

    .then((response) => {
        var repoData = {};
        repoData[repo] = response.data;
        resolve(repoData);
    })

哇,我们的答案惊人地相似。:-)首先是你的,所以我将删除我的。哇,我们的答案惊人地相似。:-)首先是你的,所以我将删除我的。我想补充一点,解决承诺更为传统:
resolve(response.data)
。我没有看响应,但我猜它已经有了一些等价的
response.data.repo
,更可能被称为
response.data.name
response.data.slug
,或者类似的东西。关键是,您不需要将数据设置为
{[repo]:…}
@maxhallinan的道具,它不是,它是GitHub API-它只是相关的语言,但是谢谢:)啊,您是对的。那太令人失望了。有点-我有点喜欢它,我厌倦了所有事情加上你要求的东西。如果我想要回购协议中列出的语言,那就是我想要的——所有我将编码的东西。你知道吗?我想补充一点,像这样解决承诺更为传统:
resolve(response.data)
。我没有看响应,但我猜它已经有了一些等价的
response.data.repo
,更可能被称为
response.data.name
response.data.slug
,或者类似的东西。关键是,您不需要将数据设置为
{[repo]:…}
@maxhallinan的道具,它不是,它是GitHub API-它只是相关的语言,但是谢谢:)啊,您是对的。那太令人失望了。有点-我有点喜欢它,我厌倦了所有事情加上你要求的东西。如果我想要回购协议中列出的语言,那就是我想要的——所有我将编码的东西。你知道吗?