Reputation: 511
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
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]);
});
});
Upvotes: 1