- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎05-21-2022 08:19 AM
I have an array of objects like var array =[ { "name": "Joe", "age": 17,flag:"true" },{ "name": "Bob", "age": 17 ,flag:"true" },{ "name": "Carl", "age": 35,flag:"false" },{ "name": "Joe", "age": 17,flag:"true" }]
I want the Unique set of objects like [ { "name": "Joe", "age": 17,flag:"true" },{ "name": "Bob", "age": 17 ,flag:"true" },{ "name": "Carl", "age": 35,flag:"false" }]
I tried to use following script but arrow function is not supported in SNOW
var answer = [];
array.forEach(x => {
if(!answer.some(y => JSON.stringify(y) === JSON.stringify(x))){
answer.push(x)
}
})
Any alternative code to do this requirement in SNOW ?
Solved! Go to Solution.
- Labels:
-
Scripting and Coding

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎05-21-2022 08:52 AM
Try below in background script for a check.
var list = [{ "name": "Joe", "age": 17,flag:"true" },{ "name": "Bob", "age": 17 ,flag:"true" },{ "name": "Carl", "age": 35,flag:"false" },{ "name": "Joe", "age": 17,flag:"true" }];
function dedupe(arr) {
return arr.reduce(function(p, c) {
var id = [c.name, c.age, c.flag].join('|');
if (p.temp.indexOf(id) === -1) {
p.out.push(c);
p.temp.push(id);
}
return p;
// return the deduped array
}, {
temp: [],
out: []
}).out;
}
gs.print(JSON.stringify(dedupe(list)));
Refer link for reference.

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎05-21-2022 08:24 AM
Hi Tanvi,
you can use below for unique value in array
var arrayUtil = new ArrayUtil();
answer= arrayUtil.unique(answer);
gs.print(answer);

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎05-21-2022 08:27 AM
Try below in background script once.
var obj = '[ { "name": "Joe", "age": 17,flag:"true" },{ "name": "Bob", "age": 17 ,flag:"true" },{ "name": "Carl", "age": 35,flag:"false" },{ "name": "Joe", "age": 17,flag:"true" }]';
var uni = [];
var parser = new JSONParser();
var parameterArr = parser.parse(obj);
for (var i = 0; i < parameterArr.length; i++) {
uni.push(parameterArr[i].name.replace(/\s/g, ''));
}
var noDuplicates = new ArrayUtil().unique(uni.toString().split(','));
gs.print(noDuplicates);
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎05-21-2022 08:32 AM
Hi Jaspal,
I want answer in this form { "name": "Joe", "age": 17,flag:"true" },{ "name": "Bob", "age": 17 ,flag:"true" },{ "name": "Carl", "age": 35,flag:"false" }
Above code is giving unique name only

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎05-21-2022 08:52 AM
Try below in background script for a check.
var list = [{ "name": "Joe", "age": 17,flag:"true" },{ "name": "Bob", "age": 17 ,flag:"true" },{ "name": "Carl", "age": 35,flag:"false" },{ "name": "Joe", "age": 17,flag:"true" }];
function dedupe(arr) {
return arr.reduce(function(p, c) {
var id = [c.name, c.age, c.flag].join('|');
if (p.temp.indexOf(id) === -1) {
p.out.push(c);
p.temp.push(id);
}
return p;
// return the deduped array
}, {
temp: [],
out: []
}).out;
}
gs.print(JSON.stringify(dedupe(list)));
Refer link for reference.