создайте Set
, который принимает отображенную версию вашего массива только с URL-адресами в наборе. - Set де-дублирует ваш массив, а затем вы можете создать новый массив из набора с добавленным к нему свойством strata
..
const myArray = [{url: 'http://linkA'}, {url: 'http://linkB'}, {url: 'http://linkA'}]
const s = new Set(myArray.map(({ url }) => url))
const newArray = [...s].map(url => ({
url,
strata: 'kit'
}))
console.log(newArray)
Если вы хотите, чтобы ваш окончательный массив объектов был более динамичным.Создайте функцию, которая принимает параметр, который вы хотите восстановить, и параметры, которые вы хотите вставить в завершенный объект.
const DE_DUPE_INSERT = (array, flag, insert) => {
const s = new Set(array.map(item => item[flag]))
return [...s].map(property => ({
[flag]: property,
...insert
}))
}
const ARR = [{url: 'http://linkA'}, {url: 'http://linkB'}, {url: 'http://linkA'}]
const de_duped = DE_DUPE_INSERT(ARR, 'url', {strata: 'kit', foo: 'bar'})
console.log(de_duped)
< es6
var DE_DUPE_INSERT = function (array, flag, insert) {
var de_duped = []
array.forEach(function (item) {
if (de_duped.indexOf(item[flag]) === -1) de_duped.push(item[flag])
})
return de_duped.map(function (property) {
var obj = {}
obj[flag] = property
Object.keys(insert).forEach(function (key) {
obj[key] = insert[key]
})
return obj
})
}
var ARR = [{url: 'http://linkA'}, {url: 'http://linkB'}, {url: 'http://linkA'}]
var de_duped = DE_DUPE_INSERT(ARR, 'url', {strata: 'kit', foo: 'bar'})
console.log(de_duped)