array для установки преобразования работает только для одномерного массива, а не для массива объектов [duplicate]

демон gist

$colors: (
    a: red,
    b: green,
    c: blue
);

@each $color, $name in $colors{
  $i: index($colors, $color $name);
  a:nth-child(#{$i}){ color:$color; }
}

5
задан StevieB 12 October 2016 в 11:10
поделиться

3 ответа

Почему это?

Согласно документации

Объект Set позволяет хранить уникальные значения любой тип, будь то примитивные значения или ссылки на объекты.

Теперь ссылка для каждого из этих массивов внутри этого конструктора Set будет отличаться, поэтому конструктор не считается уникальным значением .

7
ответ дан gurvinder372 19 August 2018 в 18:37
поделиться

Это будет работать:

let objectReference = {id:123,value:'test'}
let uniqueArray = [...new Set([objectReference, objectReference])]

>> [{id:123,value:'test'}]

Что вы делаете:

let objRef1 = {id:123,value:'test'} // creates a reference to a location in memory
let objRef2 = {id:123,value:'test'} // creates a new reference to a different place in memory

let uniqueArray = [...new Set([objRef1, objRef2])]

>> [{id:123,value:'test'},{id:123,value:'test'}]
2
ответ дан Travis Heeter 19 August 2018 в 18:37
поделиться

вы можете попытаться сделать

uniqueArray = a => [...new Set(a.map(o => JSON.stringify(o)))].map(s => JSON.parse(s))

Я знаю его уродливое, как черт, но в большинстве случаев работает независимо от того, где у вас есть новая Date () в вашем параметре объекта, а затем в stringify преобразуется в ISO string.

, то есть

let arr = [{id:1},{id:1},{id:2}];
uniqueArray(arr) //[{id:1},{id:2}]
0
ответ дан Vic 19 August 2018 в 18:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: