Skip to content

Instantly share code, notes, and snippets.

@larryyangsen
larryyangsen / groupArray.js
Last active May 15, 2018 08:07
group array
const group = (arr = [], length = 2) => {
if (length > arr.length) return;
const newArr = arr.slice();
const returnArr = [];
while (newArr.length > length) {
const values = newArr.splice(0, length);
returnArr.push(values);
}
returnArr.push(newArr);
return returnArr;
@larryyangsen
larryyangsen / compose.js
Last active January 20, 2018 05:50
compose functions
const compose = (...fns) => arg =>
fns.reduce((composed, fn) => fn(composed), arg);
const toUpper = str => str.toUpperCase();
const splitWithSign = sign=>str=>str.split(sign);
const newStrs = compose(toUpper,splitWithSign('|'))('a|bc');
console.log(newStrs)
@larryyangsen
larryyangsen / client.js
Last active December 21, 2017 01:12
nodejs elasticsearch.js detect http request
import elasticsearch from 'elasticsearch';
import config from '../config';
import proxy from 'proxy-agent';
const client = new elasticsearch.Client({
host: 'my.host.com',
createNodeAgent: () => proxy("http://localhost:8888")
});
@larryyangsen
larryyangsen / delay.js
Last active October 5, 2017 14:57
delay with promise all
(async () => {
const arrs = [1, 2, 1, 5, 6, 4, 8, 9, 10, 15];
for (let i = 0; i < 4; i++) {
const delays = arrs
.splice(0, 3)
.map(
delay =>
new Promise(resolve =>
setTimeout(() => resolve(delay), delay * 1000)
)
@larryyangsen
larryyangsen / split.js
Last active October 2, 2017 03:44
recursive split string with a sign
const split = (sign = '/') => (str = '') => {
if (!str.includes(sign)) return str.trim();
const arr = str.split(' ');
const signIndex = arr.findIndex(a => a.includes(sign));
const scrapeStr = arr.slice(0, signIndex).join(' ');
const splits = arr[signIndex].split(sign);
const sliced = arr.slice(signIndex + 1).join(' ');
const strs = [];
for (const s of splits) {
s && strs.push(split(sign)(`${scrapeStr} ${s} ${sliced}`));
@larryyangsen
larryyangsen / puppeteer.js
Last active September 15, 2017 09:43
puppeteer ptt example
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch({ headless: false });
const page = await browser.newPage();
const prePageSelector = '.btn-group-paging a:nth-child(2)@href';
const listSelector = '.r-ent';
const titleSelector = '.title a';
const titleLinkSelector = '.title a@href';
const authorSelector = '.meta .author';
const dateSelector = '.meta .date';
@larryyangsen
larryyangsen / scroll.js
Created August 3, 2017 08:30
elasticsearch js client scroll await
const options= {
index:'index1',
scroll: '2m',
type:'test',
allowNoIndices: true,
ignoreUnavailable: true,
body: {
size: 100,
from: 0
}
@larryyangsen
larryyangsen / arrToObj.js
Last active September 15, 2017 09:47
arrToObj.js
const arrToObj=([key,value])=>({[key]:value});
console.log(arrToObj(['aa','aa'])); //{aa:'aa'}