【问题标题】:Convert array of elements to array of JSON objects将元素数组转换为 JSON 对象数组
【发布时间】:2016-05-27 16:07:06
【问题描述】:

在任何地方都找不到这方面的帮助

我有一个数组 -

var myArray = [1,2,3]

但我需要这个变成 -

[{"val" : 1, "checked" : false}, {"val" : 2, "checked" : false},{"val" : 3, "checked" : false}]

这是怎么做到的?

【问题讨论】:

标签: javascript arrays json


【解决方案1】:

{'val' = 1, 'checked' = false} 不是有效的 JSON 格式,因为键和值应该用冒号分隔 : 而不是 =,它应该是 {"val" : 1, "checked" : false}

试试下面的,

var newArray = myArray.map( function(value){
   return {"val" : value, "checked" : false};
} )

【讨论】:

  • + 对于正确有效的 JSON 格式,请改用双引号
  • 天哪,我们对 JSON 是什么感到困惑。请大家记住,原生 Javascript 对象早在 JSON 实现之前就有其结构。事实上,JSON 甚至不是该语言的原生部分(直到 es5)。 JSON 是“javascript 对象表示法”。虽然它可以引用 js 对象的结构,但它主要用于数据,并且用作字符串文字。当我说对象时,我的意思是原生 JS 对象。当我说 JSON 时,我指的是该对象的字符串表示形式。
  • 所以 JSON 本身需要双引号,按照它的规范。然而,虽然对象是原生 javascript 对象形式,但双引号和单引号是可以互换的。对象上的键名不需要任何类型的引号(保留字除外),但 JSON 需要在除数字、数组和布尔值之外的所有内容周围加上双引号
  • 虽然有四秒钟的时间,所以我可以原谅你不是超人:p
  • 您使用的报价类型是个人喜好问题。我认为大多数风格指南都提倡使用单引号而不是双引号,但我还没有阅读足够的内容(或任何内容,真的)来支持这一点。我知道 google、airbnb、meteor 和其他一些都支持单引号而不是双引号。显然我更喜欢他们! :D 但这都是偏好
【解决方案2】:

试试这个:

var myArray = [1, 2, 3];
var jsonText = [];
for (i = 0; i < myArray.length; i++) {
    jsonText[i] = {};
    jsonText[i].val = myArray[i];
    jsonText[i].checked = false;
}
JSON.stringify(jsonText);

【讨论】:

  • 啊,我知道这是如何工作的——但我对我接受的答案很满意。感谢您的意见,我投了赞成票。
  • 很乐意提供帮助,另一个答案也是较短的版本。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-09-19
  • 1970-01-01
  • 2012-07-21
  • 2020-10-02
  • 1970-01-01
  • 2021-09-11
相关资源
最近更新 更多