【问题标题】:variable name is appended to json instead of variable value变量名附加到 json 而不是变量值
【发布时间】:2020-04-07 08:41:46
【问题描述】:

我从我编写的 API 中得到一个 json。此 json 包含一些值,其中一个应附加到另一个 json。 将数据附加到的 json 如下:

originalOrder = {
              "nome": 1,
              "cognome": 2,
              "mail": 3,
              "telefono": 4,
              "cf": 5,
              "data": 6,
              "ora": 7,
              "cellit": 8,
              "cellex": 9
          };

我需要追加的数据是:

var toAppend = data.name;

如果我回显 toAppend 值,它会显示正确的值。例如说 toAppend 与 dummyData 相呼应。我希望 json 在最后:

originalOrder = {
              "nome": 1,
              "cognome": 2,
              "mail": 3,
              "telefono": 4,
              "cf": 5,
              "data": 6,
              "ora": 7,
              "cellit": 8,
              "cellex": 9,
              "dummyData": 10
          };

所以我也计算了数组的长度:

var lunghezza = parseInt(originalOrder.length);
lunghezza = lunghezza +2;

然后我将新项目添加到数组中:

originalOrder.toAppend=lunghezza;

但数组最终是这样的:

originalOrder = {
                  "nome": 1,
                  "cognome": 2,
                  "mail": 3,
                  "telefono": 4,
                  "cf": 5,
                  "data": 6,
                  "ora": 7,
                  "cellit": 8,
                  "cellex": 9,
                  "toAppend": NaN
              };

所以我有两个问题:

  • 我得到的是变量名而不是变量值
  • 我得到的不是数字而是 10(我也尝试使用 parseInt 强制它,但似乎没有运气)

我在这里做错了什么?

编辑: 如果我这样做了

var toAppend = data.nome; console.log('toAppend: '+toAppend);

在控制台日志中:

toAppend: dummyData; 这是预期的行为

谢谢!

【问题讨论】:

  • originalOrder 是一个对象(字典)。对于对象,如果你使用 .length ,它将返回 undefined ,如果你将数字添加到 undefined ,它将始终返回 NaN。
  • 你能显示console.logdummyData 显示的内容吗?如果您要添加一个名为voce 的属性,您到底想添加什么,您是否希望出现不同的键?此外,originalOrder 是一个对象,而不是一个数组。它没有length 属性。如果要统计对象中的键,请使用Object.keys(originalOrder).length
  • 一旦你纠正了前面 cmets 中描述的长度问题,originalOrder[toAppend]=lunghezza;
  • @casraf 查看我的编辑
  • 试试@Nick 和我一起提出的建议,我认为这会让你得到你想要达到的目标。

标签: javascript jquery arrays json


【解决方案1】:

originalOrder 是一个对象,因此,要获取键的数量(即“对象的长度”),您需要:

Object.keys(originalOrder).length

要添加具有 var toAppend 值的键,您需要编写:

originalOrder[toAppend] = lunghezza

【讨论】:

  • 谢谢,这正是我们在 cmets 中讨论的内容。
【解决方案2】:

要将变量值用作对象的键,您可以在 javascript 中使用方括号。

const obj = {
   "hello": "world"
};
const key = "value";
obj[key] = "any value";
console.log(obj)

将打印

{
   "hello": "world",
   "value": "any value"
}

另外,您不能在对象上使用length 属性。但是,您可以获取对象的键列表,然后获取长度。

console.log(Object.keys(obj).length);

将打印

2

希望对你有帮助

【讨论】:

  • 谢谢,这正是我们在 cmets 中已经讨论过的问题
猜你喜欢
  • 2017-12-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-23
  • 1970-01-01
  • 1970-01-01
  • 2011-05-11
  • 1970-01-01
相关资源
最近更新 更多