JavaScript将一些数据包装到json数组中

JavaScript将一些数据包装到json数组中,javascript,arrays,json,Javascript,Arrays,Json,我想从这个字符串值创建jSon格式: hello|world|this|is|javascript || my|name|is|mahdi 在由此创建的jSon数组中,我不能通过使用|拆分将此字符串包装到分隔符作为2数组。我的代码工作正常,但在使用| |拆分字符串后,我无法在json中创建一些数组 结果我的代码是: { "FILEDS": [ { "template_id": "123", "fields_id": "45

我想从这个字符串值创建jSon格式:

hello|world|this|is|javascript || my|name|is|mahdi
在由此创建的jSon数组中,我不能通过使用
|
拆分将此字符串包装到分隔符作为2数组。我的代码工作正常,但在使用
| |
拆分字符串后,我无法在json中创建一些数组

结果我的代码是:

{
    "FILEDS": [
        {
            "template_id": "123",
            "fields_id": "456"
        },
        {
            "item": "hello"
        },
        {
            "item": "world"
        },
        {
            "item": "this"
        },
        {
            "item": "is"
        },
        {
            "item": "javascript "
        },
        {
            "item": " my"
        },
        {
            "item": "name"
        },
        {
            "item": "is"
        },
        {
            "item": "mahdi"
        }
    ]
}
但我希望得到如下json格式的结果:

{
    "FILEDS": [
        {
            "template_id": "123",
            "fields_id": "456"
        },
        [
            {
                "item": "hello"
            },
            {
                "item": "world"
            },
            {
                "item": "this"
            },
            {
                "item": "is"
            },
            {
                "item": "javascript "
            }
        ],
        [
            {
                "item": " my"
            },
            {
                "item": "name"
            },
            {
                "item": "is"
            },
            {
                "item": "mahdi"
            }
        ]
    ]
}
我的代码在代码下面,如何在每个
中为
创建此数组,以便创建一些数据并将其包装到
[]

<script type="text/javascript" language="JavaScript">

    var data = "hello|world|this|is|javascript || my|name|is|mahdi";
    var templates = {
        FILEDS: []
    };

    templates.FILEDS.push({
        "template_id": "123",
        "fields_id": "456",
    });

    var split_data = data.split("||");

    for (var i = 0; i < split_data.length; i++) {
        var fields = split_data[i].split("|");
        for (var j = 0; j < fields.length; j++) {
            templates.FILEDS.push({
                "item": fields[j],
            });
        }
    }
    console.log(JSON.stringify(templates));
</script>

var data=“hello | world | this | is | javascript | | my | name | is | mahdi”;
变量模板={
文件:[]
};
templates.FILEDS.push({
“模板id”:“123”,
“字段id”:“456”,
});
var split_data=data.split(“| |”);
对于(变量i=0;i
试试这个

var split_data = data.split("||");

for (var i = 0; i < split_data.length; i++) {
    var sentence = [];
    var fields = split_data[i].split("|");
    for (var j = 0; j < fields.length; j++) {
        sentence.push({
            "item": fields[j],
        });
    }
    templates.FILEDS.push(sentence)
}
var split_data=data.split(“| |”);
对于(变量i=0;i
试试这个

var split_data = data.split("||");

for (var i = 0; i < split_data.length; i++) {
    var sentence = [];
    var fields = split_data[i].split("|");
    for (var j = 0; j < fields.length; j++) {
        sentence.push({
            "item": fields[j],
        });
    }
    templates.FILEDS.push(sentence)
}
var split_data=data.split(“| |”);
对于(变量i=0;i
您需要一个辅助阵列来保存数据

var data = "hello|world|this|is|javascript || my|name|is|mahdi";
var templates = {
    FILEDS: []
};

templates.FILEDS.push({
    "template_id": "123",
    "fields_id": "456",
});

var split_data = data.split("||");

for (var i = 0; i < split_data.length; i++) {
    var fields = split_data[i].split("|");
    var arr = [];
    for (var j = 0; j < fields.length; j++) {
        arr.push({ "item" : fields[j] });
    }
    templates.FILEDS.push(arr);
}
console.log(JSON.stringify(templates));
// result" {"FILEDS":[{"template_id":"123","fields_id":"456"},[{"item":"hello"},{"item":"world"},{"item":"this"},{"item":"is"},{"item":"javascript "}],[{"item":" my"},{"item":"name"},{"item":"is"},{"item":"mahdi"}]]}
var data=“hello | world | this | is | javascript | | my | name | is | mahdi”;
变量模板={
文件:[]
};
templates.FILEDS.push({
“模板id”:“123”,
“字段id”:“456”,
});
var split_data=data.split(“| |”);
对于(变量i=0;i
您需要一个辅助阵列来保存数据

var data = "hello|world|this|is|javascript || my|name|is|mahdi";
var templates = {
    FILEDS: []
};

templates.FILEDS.push({
    "template_id": "123",
    "fields_id": "456",
});

var split_data = data.split("||");

for (var i = 0; i < split_data.length; i++) {
    var fields = split_data[i].split("|");
    var arr = [];
    for (var j = 0; j < fields.length; j++) {
        arr.push({ "item" : fields[j] });
    }
    templates.FILEDS.push(arr);
}
console.log(JSON.stringify(templates));
// result" {"FILEDS":[{"template_id":"123","fields_id":"456"},[{"item":"hello"},{"item":"world"},{"item":"this"},{"item":"is"},{"item":"javascript "}],[{"item":" my"},{"item":"name"},{"item":"is"},{"item":"mahdi"}]]}
var data=“hello | world | this | is | javascript | | my | name | is | mahdi”;
变量模板={
文件:[]
};
templates.FILEDS.push({
“模板id”:“123”,
“字段id”:“456”,
});
var split_data=data.split(“| |”);
对于(变量i=0;i
另一个带有

如果您想要像这样的对象,请更新

{ "FILEDS": [ 
    { "template_id": "123", "fields_id": "456" }, 
    {"items": [
        [ "hello", "world", "this", "is", "javascript " ], 
        [ " my", "name", "is", "mahdi" ] 
    ] }
]}
您可以稍微更改上面的代码

templates.FILEDS.push({
    "item" : data.split("||").map(function(el){
                 return el.split('|');
             })
    }
);
另一个变种是

如果您想要像这样的对象,请更新

{ "FILEDS": [ 
    { "template_id": "123", "fields_id": "456" }, 
    {"items": [
        [ "hello", "world", "this", "is", "javascript " ], 
        [ " my", "name", "is", "mahdi" ] 
    ] }
]}
您可以稍微更改上面的代码

templates.FILEDS.push({
    "item" : data.split("||").map(function(el){
                 return el.split('|');
             })
    }
);

@mahdipishguy,请注意,其他答案也一样,并且在大型阵列上更有效(更快),因为在大多数情况下,simple
for
map
使用Array.prototype.push.apply而不是[].push更快。apply@Sagi,你能解释一下原因吗?;-)
Array.prototype.push==[].push//true
对我来说更优雅,因为你不需要创建数组实例就可以使用push函数。@Grundy如何为嵌套数组分配键?像这样:
{“FILEDS”:[{“template_id”:“123”,“fields_id”:“456”},“items”:[“hello”,“world”,“this”,“is”,“javascript”],[“my”,“name”,“is”,“mahdi”]]}
@mahdipishguy,请注意,其他答案也一样,并且在大型阵列上更有效(更快),因为在大多数情况下,simple
for
map
使用Array.prototype.push.apply而不是[].push更快。apply@Sagi,你能解释一下原因吗?;-)
Array.prototype.push==[].push//true
对我来说更优雅,因为你不需要创建数组实例就可以使用push函数。@Grundy如何为嵌套数组分配键?像这样:
{“FILEDS”:[{“template_id”:“123”,“fields_id”:“456”},“items”:[“hello”,“world”,“this”,“is”,“javascript”],[“my”,“name”,“is”,“mahdi”]]}