const key = 'имя какого-то свойства';
const newArr = arr.filter(n => n[key] != null);
const newArr = arr.filter(function(n) {
return this.every(m => n[m] != null);
}, [ 'имя какого-то свойства', 'ещё одно', 'и ещё' ]);
arr.length -= arr.reduce((acc, n, i, a) => (
a[i - acc] = n,
acc + Object.values(n).some(m => m == null)
), 0);
const obj = arr
.filter(n => n.status === 'approved')
.reduce((p, c) => ({ ...p, message: `${p.message}\n${c.message}` }));
const grouped = arr.reduce((acc, { status, message }) => {
acc[status] = acc[status] || { status, messages: [] };
acc[status].messages.push(message);
return acc;
}, {});
Object.keys(grouped).forEach(n => grouped[n].messages = grouped[n].messages.join('\n'));
const obj = grouped.approved;
одно из вложенных свойств через v-model привязывается к чекбоксу
<...>
при попытке прописать v-if с использованием этого свойства, при его изменении ничего в DOM не меняется
v-model
, при первом изменении состояния чекбокса. А vue, как известно, не может обнаружить добавление свойства объекта. Так что это свойство, чтобы оно стало реактивным, должно изначально присутствовать в объекте, и, раз оно используется для задания состояния чекбоска, то пусть дефолтным значением будет false
.v-model
добавляет отсутствующие свойства как реактивные. i
в момент выполнения a('.add_list > div')[i]
будет равно 0
, 1
, 2
, и т.д., то вы сильно ошибаетесь. Оно всегда будет равно 10
. Объявите i
с помощью let
вместо var
.const items = document.querySelectorAll('.add_list > div');
const numItemsToUpdate = 10;
const update = (el, index) =>
setTimeout(() => el.style.opacity = 1, index * 30);
Array.prototype.slice.call(items, 0, numItemsToUpdate).forEach(update);
// или
for (let i = 0; i < Math.min(items.length, numItemsToUpdate); i++) {
update(items[i], i);
}
// или
for (const [ i, n ] of items.entries()) {
if (i === numItemsToUpdate) {
break;
}
update(n, i);
}
Math.floor(Date.now() / 1000);
let time = Math.floor(Date.now() / 1000);
setInterval(() => time = Math.floor(Date.now() / 1000), 1000);
<Product product={this.props.product} />
{this.props.product.map(n => <Product key={n.id} product={n} />)}
{Object.keys(anyIcons).map(type => (
<Category>
<CategoryType>
{type === 'people' && 'PEOPLE'}
{type === 'nature' && 'ANIMALS & NATURE'}
</CategoryType>
{anyIcons[type].map(icon => (
<RedactorEmojiItem data={icon.code}>{icon.title}</RedactorEmojiItem>
))}
</Category>
))}
data: () => ({
activeClass: '',
...
}),
<p :class="activeClass"></p>
data: () => ({
classes: [ 'какой-то класс', 'ещё класс', ... ],
...
}),
<p
v-for="n in classes"
@mouseover="activeClass = n"
@mouseout="activeClass = ''"
>
groupedItems() {
return this.items.reduce((acc, n) => {
for (const k in n) {
acc[k] = acc[k] || {};
acc[k][n[k]] = (acc[k][n[k]] || 0) + 1;
}
return acc;
}, {});
}
<div v-for="(group, groupName) in groupedItems">
<h3>{{ groupName }}:</h3>
<div v-for="(value, key) in group">{{ key }} ({{ value }})</div>
</div>
import MyCalendar from './MyCalendar';
import { MyCalendar } from './MyCalendar';