简体   繁体   中英

How to add Json items using forEach loop?

This is part of GoJS (diagramming) project and "properties" is itemArray, which is defined inside of one node in diagram.

1) This works (hard coded values):

properties: [
    { "property_name": "Prop1", "property_value": "100"},
    { "property_name": "Prop2", "property_value": "101" },
    { "property_name": "Prop3", "property_value": "102" }
]

2) This doesn't work (from data source):

properties: [
    data.ObjectPropertiesList.forEach(function (item, i) {
        properties.push({ "property_name": item.Item1.toString(), "property_value": item.Item2.toString() });
    })
]

2.1) With surrounding code:

myPalette.model = new go.GraphLinksModel([
    { key: "B", text: "some block", color: "blue" },
    { key: "G", text: "Macro", isGroup: true },
    { category: "circle", key: "Gc", text: "A", color: "black", group: "G", loc: "0 0" },
    {
        category: "table", key: "Ga", group: "G", loc: "60 0",
        properties: [
            data.ObjectPropertiesList.forEach(function (item, i) {
                properties.push({ "property_name": item.Item1.toString(), "property_value": item.Item2.toString() });
            })
        ]
    }
], [
    { from: "Gc", to: "Ga" }
]);

Why pushing data inside var declaration ? just declare your array then push values , see below working snippet

 var data= {}; data.ObjectPropertiesList = [ {Item1:"Prop1",Item2:"100"}, {Item1:"Prop2",Item2:"101"}, {Item1:"Prop3",Item2:"102"}, ] properties = []; data.ObjectPropertiesList.forEach(function (item, i) { properties.push({ "property_name": item.Item1.toString(), "property_value": item.Item2.toString() }); }) console.log(properties); 

var properties = [];
for(var i=0; i < data.length; i++){
    var item = data[i];
    properties.push({ 
        "property_name": item.Item1.toString(), 
        "property_value": item.Item2.toString() 
    })
}

Don't use forEach when you want map :

properties: data.ObjectPropertiesList.map(function (item) {
    return { "property_name": item.Item1.toString(), "property_value": item.Item2.toString() };
})

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM