Remove Duplicate Object from JSON Array
uniqueArray.indexOf
doesn't work because you're comparing objects against strings (splitlen[i].name
). Try to use .find()
instead:
var arr1 = '[{"name":"Pune","city":"India"},{"name":"Pune","city":"India"}]';var splitlen = JSON.parse(arr1);var uniqueArray = [];var uniqueJson = {};for(i=0;i<splitlen.length;i++) { if(!uniqueArray.find(x => x.name === splitlen[i].name)) { uniqueArray.push(splitlen[i]); } }console.log(uniqueArray);
or
var arr1 = '[{"name":"Pune","city":"India"},{"name":"Pune","city":"India"}]';var splitlen = JSON.parse(arr1);function compare(x){ return x.name === splitlen[i].name;}var uniqueArray = [];var uniqueJson = {};for(i=0;i<splitlen.length;i++) { if(!uniqueArray.find(compare)) { uniqueArray.push(splitlen[i]); } }console.log(uniqueArray);
you can try this. Also one more thing your array declaration is not right, remove single quotes from array.
var arr1 = [{"name":"Pune","city":"India"},{"name":"Pune","city":"India"}]; function getUniqueListByKey(arr, key) { return [...new Map(arr.map(item => [item[key], item])).values()] } var arr2 = getUniqueListByKey(arr1, "name") console.log(arr2);
Please try the following example
const arr1 = '[{"name":"Pune","city":"India"},{"name":"Pune","city":"India"}]';const splitlen = JSON.parse(arr1);const output = splitlen.reduce((previousValue, currentValue) => { const { name, city } = currentValue; const index = previousValue.findIndex( (entry) => entry.name === name && entry.city === city ); if (index === -1) { return [...previousValue, currentValue]; } return previousValue;}, []);console.log(output);
See