在创建对象

时间:2017-10-17 14:47:44

标签: javascript arrays node.js reactjs

我将JSON转换为数组并返回单独的JSON对象(它与React和子进程有关)。下面的数组工作正常,将数组元素放入变量中也是如此。但是当我尝试从他们那里做一个obj时,键不起作用,它就像“myKey”一样 - 为什么?将数组元素转换为对象的正确方法是什么?

var express = require('express');
var app = express();
var bodyParser = require('body-parser');
var methodOverride = require('method-override');
var fetch = require('isomorphic-fetch');
app.use(bodyParser.json());
app.use(methodOverride());


var promise = new Promise(function(resolve, reject) {
fetch('https://jsonplaceholder.typicode.com/posts/1').then(
function(response){
 return response.json();
    }
).then(function(jsonData){

    result = []

    for(var i in jsonData) {
        result.push([i, jsonData [i]]);
    }

    var myKey = result[0][0];
    var myValue = result[0][1];
    var myJSON = {myKey : myValue}

    console.log(myJSON);


   });

});

3 个答案:

答案 0 :(得分:2)

因为myKey被解释为值,而不是变量。您需要使用动态密钥语法,即:

{ [myKey] : myValue }

完整代码:

var express = require('express');
var app = express();
var bodyParser = require('body-parser');
var methodOverride = require('method-override');
var fetch = require('isomorphic-fetch');
app.use(bodyParser.json());
app.use(methodOverride());


var promise = new Promise(function(resolve, reject) {
fetch('https://jsonplaceholder.typicode.com/posts/1').then(
function(response){
 return response.json();
    }
).then(function(jsonData){

    result = []

    for(var i in jsonData) {
        result.push([i, jsonData [i]]);
    }

    var myKey = result[0][0];
    var myValue = result[0][1];
    var myJSON = {[myKey] : myValue}

    console.log(myJSON);


   });

});

答案 1 :(得分:1)

使用带方括号的键。

var myJSON = {[myKey] : myValue}

答案 2 :(得分:0)

有一种简单的方法可以使这个工作

var myJSON = {};
myJson.myKey = myValue;
myJson.myKey2 = myJsonValue2;
..