【问题标题】:create a Bidimensional object and print it in json in javascript创建一个二维对象并在 javascript 中以 json 格式打印它
【发布时间】:2021-06-11 10:26:04
【问题描述】:

我在使用 javascript(没有 jquery)创建对象数组 2d 时遇到一些问题

输出应该是这样的:

{"Switch":[{"name":"Switch 1","description":"Switch 1"},{"name":"Switch 2","description":"Switch 2"},{"name":"Switch 3","description":"Switch 3"},{"name":"Switch 4","description":"Switch 4"},{"name":"Switch 5","description":"Switch 5"},{"name":"Switch 6","description":"Switch 6"},{"name":"Switch 7","description":"Switch 7"}]}

我达到的唯一一个目标是使用两个不同的数组,一个用于名称,一个用于描述,如下所示:

var swName = [];
var swDesc = [];
var i;
var namePrefix = "swtchname";
var descPrefix = "swtchdesc";
var count = document.querySelectorAll('[id^="swtchname"]').length; //if exist swtchname exist olso description

for(i=0;i<count;i++){
    var name;
    var desc;
    name = document.getElementById(namePrefix + i).value;
    desc = document.getElementById(descPrefix + i).value;
    swName.push(name);
    swDesc.push(desc);
}

我想创建一个二维对象并将所有数据放入其中。

我该如何改变呢?因为如果我创建一个这样的对象,它应该也很容易打印 JSON 格式,对吧?

【问题讨论】:

  • X.Switch.push({name: name, description: desc});,其中X 是对包含Switch 属性的对象的引用。
  • 你应该是字符串化/解析... JSON.stringify({"type":"message","details":{"user":"tester1"}}; 然后在你解析它的时候想读。
  • 这里的主要问题是如何使用 Switch 属性创建对象 X

标签: javascript json multidimensional-array


【解决方案1】:

假设您有 swtchname{x}swtchdesc{x}id&lt;input&gt; 元素,其中 x 是一个数字,请尝试以下操作:

var namePrefix = "swtchname";
var descPrefix = "swtchdesc";
var names = document.querySelectorAll('[id^="swtchname"]');
var X = {
  Switch: []
};

names.forEach(function(i) {
  var desc = document.getElementById(i.id.replace(namePrefix, descPrefix));
  X.Switch.push({
    name: i.value,
    desc: (desc && desc.value) || ''
  });
});

console.log(X);
<input id="swtchname1" value="name 1">
<input id="swtchdesc1" value="desc 1">

<input id="swtchname2" value="name 2">
<input id="swtchdesc2" value="desc 2">

<input id="swtchname3" value="name 3">
<input id="swtchdesc3" value="desc 3">

<input id="swtchname4" value="name 4">
<input id="swtchdesc4" value="desc 4">

<input id="swtchname5" value="name 5">
<input id="swtchdesc5" value="desc 5">

<input id="swtchname6" value="name 6">
<input id="swtchdesc6" value="desc 6">

【讨论】:

  • 是的,经过多次尝试,我找到了方法!!我做了这样的事情:`代码`var SWarr = []; for (var i = 0; i
【解决方案2】:

是的,经过多次尝试,我找到了方法!我做了这样的事情:

var SWarr = [];
    for (var i = 0; i < count; i++) {
        SWarr.push({
            name: document.getElementById(namePrefix + i).value,
            description: document.getElementById(descPrefix + i).value,
        });
    }

    var jsonFormInfo = (JSON.stringify({ Switch: [SWarr] }));

非常感谢您的意见!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-01
    • 1970-01-01
    • 2021-03-16
    相关资源
    最近更新 更多