user3359706
user3359706

Reputation: 511

Building object using javascript instead of php

I’m trying to create a data object in javascript that matches the construction from the php script below and need help with adding the ‘depends’ elements under object ‘name’.

var data = [{}];
var json = [
{ "type": "type1", "group": "group1", "name": "name1", "depends": ["x","y","z"] },
{ "type": "type2", "group": "group2", "name": "name2", "depends": ["a","b","c"] },
{ "type": "type3", "group": "group3", "name": "name3", "depends": ["q"] }]

json.forEach(function (item) {
    data.push(item.name);
});


json.forEach(function (item) {
    item.forEach(function (item.depends) {
        data.push(item.depends);
    });
});

PHP

foreach ($json as $obj) {
    $data[$obj['name']] = $obj;
}

foreach ($data as &$obj) {
    $obj['dependedOnBy'] = array();
}

unset($obj);
foreach ($data as &$obj) {
    foreach ($obj['depends'] as $name) {
        if ($data[$name]) {
            $data[$name]['dependedOnBy'][] = $obj['name'];
        } else {
            $errors[] = "Unrecognized dependency: '$obj[name]' depends on '$name'";
        }
    }
 }

Upvotes: 0

Views: 69

Answers (1)

georg
georg

Reputation: 215019

From my understanding, this is what your php code does:

var data = {};
json.forEach(function (item) {
    item.dependedOnBy = [];
    data[item.name] = item;
});

var errors = [];
Object.keys(data).forEach(function (name) {
    data[name].depends.forEach(function (dep) {
        if(!data[dep])
            errors.push( "Unrecognized dependency: " + name + " depends on " + dep);
        else
            data[name].dependedOnBy.push(data[dep]);
    });
});

http://jsfiddle.net/yqqdr5bt/

Upvotes: 1

Related Questions