split
по regexp когда в regexp есть скобочки (/(@\S+)/
) сохраняет в результирующем массиве значения из скобочек, т.е. строка "a @b@c d"
превращается в массив ["a ", "@b", "", "@c", " d"]
, соответственно каждое второе значение в таком массиве - id-шник. i % 2
- остаток от деления i
на 2, т.е. при последовательном наборе чисел - это просто чередование 0 1 0 1 ...
, в условных выражениях же 0 приводится к false
, не 0 к true
. <span
class="comment-text"
v-for="{str, cls} in item.textList"
:class="cls"
>
{{ str }}
</span>
computed: {
userSet() {
return new Set(this.arr.map(({value}) => value));
},
splitComments() {
return this.comments.map(item => ({
...item,
textList: item.text.split(/(@\S+)/).map((str, i) => i%2 ? {
str,
cls: this.userSet.has(str.slice(1)) ? 'highlight-user' : 'highlight-some'
} : {
str
})
}))
}
}
const myObject = {
otherKey: { // рандомный ключ
moreKey: 123, // всегда тип number
defaultKey: 'other data' // разные типы данных, но заранее описан тот тип, что будет конкретно в этом объекте
},
otherMoreKey: null
}
хотя, конечно, этого никто и не просил.)
С этим можно только смириться. Шанс на коллизию uuid не больше чем шанс что космический луч испортит состояние у вас в оперативной памяти.
Ну и на сервере конечно есть ограничение на уникальность ключа в столбце, чтоб неслучайно никто ничего не поломал.