people.filter((n, i, a) => n.country && i === a.findIndex(m => m.country === n.country))
people.filter((n, i, a) => n.country && n === a.find(m => m.country === n.country))
people.filter(function({ country: n }) {
return n && !(this[n] = this.hasOwnProperty(n));
}, {})
Object.values(people.reduce((acc, n) => (n.country && (acc[n.country] = n), acc), {}))
[...people.reduce((acc, n) => n.country ? acc.set(n.country, n) : acc, new Map).values()]
Array.from(
new Set(people.map(n => n.country).filter(Boolean)),
n => people.find(m => m.country === n)
)
Вопрос - правильный ли такой подход?
use GuzzleHttp\Pool;
use GuzzleHttp\Client;
use GuzzleHttp\Psr7\Request;
$client = new Client();
$requests = function ($total) {
$uri = 'http://127.0.0.1:8126/guzzle-server/perf';
for ($i = 0; $i < $total; $i++) {
yield new Request('GET', $uri);
}
};
$pool = new Pool($client, $requests(100), [
'concurrency' => 5,
'fulfilled' => function ($response, $index) {
// this is delivered each successful response
},
'rejected' => function ($reason, $index) {
// this is delivered each failed request
},
]);
// Initiate the transfers and create a promise
$promise = $pool->promise();
// Force the pool of requests to complete.
$promise->wait();
слышала мнение, что все их знать не надо
Какие используются в геймдеве?
Что значит в вакансиях "знание паттернов проектирования"?
Как проверяют на их знание?
size_t min_value_index = 0;
size_t max_value_index = 0;
0
для того чтобы изначально обозначить первый же элемент массива и как минимальный, и как максимальный одновременно. Именно так я определю начальное состояние алгоритма.for( size_t index = 1; index < stream_length; ++index )
{
// ...
}
for( size_t index = 1; index < stream_length; ++index )
{
if( stream[ index ] < stream[ min_value_index ] )
{
min_value_index = index;
}
if( stream[ index ] > stream[ max_value_index ] )
{
max_value_index = index;
}
}
min_value_index
будет гарантированно лежать индекс минимального значения массива, а в max_value_index
- индекс максимального.const comp = Vue.component('comp', {
...
data() {
return state
},
...
})
const state = Vue.observable({ z: false });
const comp = Vue.component('comp', {
...
function twoSum(a, t) {
let o = {};
for (let i = 0; i < a.length; i++) {
if (o[a[i]] !== undefined) return [o[a[i]], i];
o[t - a[i]] = i;
}
}
function hexToTriple(hex) {
hex = hex.slice(1);
if (hex.length === 3) {
return hex.split('').map(byte => parseInt(byte.repeat(2), 16));
} else if (hex.length === 6) {
return hex.match(/.{2}/g).map(byte => parseInt(byte, 16));
} else {
throw new Error(`invalid color ${hex}`);
}
}
function tripleToHex(triple) {
return '#' + triple.map(byte => byte.toString(16).padStart(2, '0')).join('');
}
function hexColorSubtract(hexAColor, hexBColor) {
const [tripleA, tripleB] = [hexAColor, hexBColor].map(hexToTriple);
const resultTriple = tripleA.map((byte, index) => {
return Math.max(byte - tripleB[index], 0);
});
return tripleToHex(resultTriple);
}
// использование:
hexColorSubtract("#cef", "#110011"); // #bbeeee
module.exports = {
chainWebpack: config => {
config
.plugin('html')
.tap(args => {
args[0].minify.removeAttributeQuotes = false;
return args;
})
}
};
{
template: `
<div>
<preloader v-if="!pageData" />
<div v-else >
...
</div>
</div>
`,
data() {
return {
pageData: null
}
},
async mounted() {
this.pageData = await getData()
}
}