制作对象时未插入数组键

Posted

技术标签:

【中文标题】制作对象时未插入数组键【英文标题】:Array key does not get interpolated when making object 【发布时间】:2018-03-29 07:31:17 【问题描述】:

我将 JSON 转换为一个数组,然后再转换为单独的 JSON 对象(它与 React 和子对象有关)。下面的数组工作正常,将数组元素放入 vars 也是如此。但是当我尝试从它们中创建一个 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);


   );

);

【问题讨论】:

var myJSON = [myKey]: myValue; 我从未想到过这种语法。只是错过了。我试图使用更多 但这在这种情况下不起作用。好的,谢谢大家。 请注意,它不适用于旧 javascript 环境,例如旧浏览器或旧手机。在这些环境中,您必须使用单独的赋值语句来完成。 【参考方案1】:

有一个简单的方法可以让它工作

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

【讨论】:

我相信你会想要这个版本的myJson[myKey]【参考方案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);


   );

);

【讨论】:

【参考方案3】:

使用带方括号的键。

var myJSON = [myKey] : myValue

【讨论】:

以上是关于制作对象时未插入数组键的主要内容,如果未能解决你的问题,请参考以下文章

php 根据有序键集排序数组。注意:将删除键组中没有相应键的值。

JS基础 Map是一组键值对的结构

Laravel 如何制作一个处理对象数组的 POST?

我正在尝试将数据插入到对象的二维数组中

子 JSON 对象未定义时未定义

SSMS设置主键/主键组/外键