Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Move an object (element) one step up with Javascript

I have several objects like this:

enter image description here

I want to move type and value one step up so they will be next to field, and then delete data.
It looks like this when departments is converted to JSON:

[
    {"field"    : "DEPARTMAN_NO",
     "data"     : { "type":"numeric" , "comparison":"eq" , "value":11 }
    },
    {"field"    : "DEPARTMAN_ADI",
     "data"     : { "type":"string" , "value":"bir" }
    }
]

I have tried:

departments = grid.filters.getFilterData();
i = {};
for(var i in department) {
department = i.data;
delete.department.data;
};

but it dosen't work.

like image 255
ilhan Avatar asked Sep 18 '25 20:09

ilhan


2 Answers

1) First, loop departments, each item we call it department;
2) You want to move department.data's properties to department, From another angle, you can move department's properties to department.data and return department.data, code like:

var departments = [{
        "field": "DEPARTMAN_NO",
        "data": {
            "type": "numeric",
            "comparison": "eq",
            "value": 11
        }
    }, {
        "field": "DEPARTMAN_ADI",
        "data": {
            "type": "string",
            "value": "bir"
        }
    }],
    department;

for (var i = 0, len = departments.length; i < len; i++) {
    department = departments[i]; // department
    for (var key in department) {
        if (key !== 'data' && department.data) {
            department.data[key] = department[key];
        }
    }
    departments[i] = department.data || department; // if no department.data, no change
}

console.log(departments);

result:

enter image description here

view the full demo http://jsfiddle.net/KVYE5/

like image 104
wiky Avatar answered Sep 20 '25 09:09

wiky


I wrote a little npm package that does what you're asking for: moving a property up a level in an object.

You can get it here: https://www.npmjs.com/package/move-property-up-a-level

Usage

var movePropertyUpALevel = require('movePropertyUpALevel');

var fakeObj = {
    poodle: {
        first: {
            hey: 'you'
        },
        second: 'meAgain'
    }
};

movePropertyUpALevel(fakeObj, 'poodle');

console.log(fakeObj.first.hey);
//'you'
console.log(fakeObj.poodle);
//undefined
like image 36
tnrich Avatar answered Sep 20 '25 10:09

tnrich