Gists
This is a sample script for retrieving the values with and without duplicating from JSON object using Google Apps Script. Also this can be used by Javascript.
Sample script
var obj = [
{ key1: "value1a", key2: "value1b" },
{ key1: "value2a", key2: "value2b" },
{ key1: "value5a", key2: "value5b" },
{ key1: "value3a", key2: "value3b" },
{ key1: "value1a", key2: "value1b" },
{ key1: "value4a", key2: "value4b" },
{ key1: "value5a", key2: "value5b" },
{ key1: "value3a", key2: "value3b" }
];
var res = obj.reduce(
function(obj, e) {
if (
obj.withoutDuplicating.some(function(f) {
return f.key1 === e.key1 && f.key2 === e.key2;
})
) {
obj.withDuplicating.push(e);
} else {
obj.withoutDuplicating.push(e);
}
return obj;
},
{ withoutDuplicating: [], withDuplicating: [] }
);
Logger.log(res);
Result
{
"withoutDuplicating": [
{
"key1": "value1a",
"key2": "value1b"
},
{
"key1": "value2a",
"key2": "value2b"
},
{
"key1": "value5a",
"key2": "value5b"
},
{
"key1": "value3a",
"key2": "value3b"
},
{
"key1": "value4a",
"key2": "value4b"
}
],
"withDuplicating": [
{
"key1": "value1a",
"key2": "value1b"
},
{
"key1": "value5a",
"key2": "value5b"
},
{
"key1": "value3a",
"key2": "value3b"
}
]
}
Note
- As other situation, when
f.key1 === e.key1 && f.key2 === e.key2 is modified to f.key1 === e.key1, the duplication of key1 can be retrieved.
Reference
Gists
This is a sample script for transposing JSON object using Google Apps Script.
[
{"key1":"a1","key2":"a2","key3":"a3","key4":"a4","key5":"a5"},
{"key1":"b1","key2":"b2","key3":"b3","key4":"b4","key5":"b5"},
{"key1":"c1","key2":"c2","key3":"c3","key4":"c4","key5":"c5"},
{"key1":"d1","key2":"d2","key3":"d3","key4":"d4","key5":"d5"},
{"key1":"e1","key2":"e2","key3":"e3","key4":"e4","key5":"e5"}
]
Output data :
{
"key1": ["a1", "b1", "c1", "d1", "e1"],
"key2": ["a2", "b2", "c2", "d2", "e2"],
"key3": ["a3", "b3", "c3", "d3", "e3"],
"key4": ["a4", "b4", "c4", "d4", "e4"],
"key5": ["a5", "b5", "c5", "d5", "e5"]
}
Script :
At first, keys have to be defined by yourself, because the order of json is not decided.
var keys = ["key1", "key2", "key3", "key4", "key5"];
var result = {};
data.map(function(_, i){return keys.map(function(f, j){return data[i][keys[j]]})}).forEach(function(e, i){result[keys[i]] = e});
Logger.log(JSON.stringify(result))
Gists
This is a sample script for combining and mixing 2 objects. Each object is an array which included a dictionary type. When the key of the dictionary object is the same, the values are mixed.
This can be also used for Google Apps Script.
var obj1 = [
{"key1": ["value1a1", "value1a2"]},
{"key1": ["value1aa1", "value1aa2"]},
{"key2": ["value2a1", "value2a2"]},
{"key3": ["value3a1", "value3a2"]},
];
var obj2 = [
{"key1": ["value1b1", "value1b2"]},
{"key3": ["value3b1", "value3b2"]},
{"key3": ["value3bb1", "value3bb2"]},
{"key4": ["value4b1", "value4b2"]},
];
Output
[
{"key1": ["value1a1", "value1a2", "value1b1", "value1b2", "value1aa1", "value1aa2"]},
{"key2": ["value2a1", "value2a2"]},
{"key3": ["value3a1", "value3a2", "value3b1", "value3b2", "value3bb1", "value3bb2"]},
{"key4": ["value4b1", "value4b2"]}
]
Sample script :
Javascript :
function mixture(obj1, obj2) {
Array.prototype.push.apply(obj1, obj2);
var temp = [];
var res = [];
obj1.forEach(function(e, i){
temp[i] = !~temp.indexOf(Object.keys(e)[0]) ? Object.keys(e)[0] : false;
if (temp[i]) {
res.push(e);
} else {
res.forEach(function(f, j){
if (Object.keys(f)[0] == Object.keys(e)[0]) {
Array.prototype.push.apply(res[j][Object.keys(f)[0]], e[Object.keys(e)[0]]);
}
});
}
});
return res;
}
var obj1 = [
{"key1": ["value1a1", "value1a2"]},
{"key1": ["value1aa1", "value1aa2"]},
{"key2": ["value2a1", "value2a2"]},
{"key3": ["value3a1", "value3a2"]},
];
var obj2 = [
{"key1": ["value1b1", "value1b2"]},
{"key3": ["value3b1", "value3b2"]},
{"key3": ["value3bb1", "value3bb2"]},
{"key4": ["value4b1", "value4b2"]},
];
var res = mixture(obj1, obj2);
console.log(JSON.stringify(res))
CoffeeScript :
This is a sample script for coffeescript.
Gists
This sample script is for adding object to object by javascript.
Script :
var obj = {
key1: "value1",
key2: "value2",
key3: "value3"
};
var obj1 = {
key4: "value4",
key5: "value5",
key6: "value6"
};
Object.assign(obj, obj1);
console.log(obj);
Result :
{ key1: 'value1',
key2: 'value2',
key3: 'value3',
key4: 'value4',
key5: 'value5',
key6: 'value6' }
jsfiddle demo
Reference :