const count = 136
function findCount (arrays, maxValue) {
let count = 0
let chunkPositions = [-1, 0]
let mergedArray = []
let resultArray = []
arrays.forEach(array => {
mergedArray = mergedArray.concat(array)
})
for (let i = 0; i < mergedArray.length; i++) {
if (++chunkPositions[0] == arrays.length) {
chunkPositions[0] = 0
++chunkPositions[1]
}
if (count >= maxValue) break
else {
const [aposition, iposition] = chunkPositions
const value = arrays[aposition][iposition]
if (!value || (count + value > maxValue)) continue
count += value
resultArray.push(value)
}
}
return resultArray
}
findCount([
[7, 2, 3, 5, 16, 50, 25, 40],
[2, 5, 10, 30, 25, 3, 10, 25],
[25, 10, 2, 10, 5, 2, 10, 5],
[7, 2, 3, 20, 3, 7, 2, 5],
[2, 20, 1, 7, 25, 1, 25],
[3]
], 136)
// Output => [7, 2, 25, 7, 2, 3, 2, 5, 10, 2, 20, 3, 10, 2, 3, 1, 5, 10, 7, 5, 3, 2]
var list = {
// Страница логина
login: {
name: {
/**Обязательно ли поле**/
isRequired: true,
/**
Начать валидацию только тогда, когда возвращается true
**/
if: function (current, all) {
return current == "admin" ? false : true
},
/**
Тип который должен быть у поля
Все типы: String, Array, Object, Boolean, Number
**/
type: String
/**
Минимальная длина и максимальная длина.
Работает только со строкой, массивом.
**/
min: 1,
max: 10,
/**
Делает соответствие регулярному выражению
**/
search: /testuser/i,
/**
Функция валидатор.
Параметры: текущее поле в цикле и все поля переданные в validation (Это тот скрипт о котором я говорил скину)
Возвращать: true если все хорошо, false если все плохо
**/
validator: function (current, all) {
return current == "testuser" ? true : false
},
/**
Сообщение которое возвращает скрипт если валидация не прошла.
**/
message: "Неверное имя!",
/**
Функция изменения message
**/
setMessage: function (current, all) {
return all.type == "company" ? "Неверное название компании" : "Неверное имя!"
}
}
}
}
// т.е у меня хранится этот лист.
// а функция validation импортирует его и начинает валидацию
validation({name: "Мегафон", type: "company"}, "login")
.catch(emessage => console.log(emessage))
.then(body => console.log(body))
Minimitter = function Minimitter() {
this.listeners = {};
};
Minimitter.prototype.on = function(name, callback) {
this.listeners[name] = this.listeners[name] || [];
this.listeners[name].push(callback);
};
Minimitter.prototype.off = function(name, callback) {
this.listeners[name] = this.listeners[name] || [];
var indexOfCallback = this.listeners[name].indexOf(callback);
if(~indexOfCallback) {
this.listeners[name].splice(indexOfCallback, 1);
}
};
Minimitter.prototype.emit = function(name, data) {
this.listeners[name].forEach(function(callback) {
try {
callback(data);
} catch(err) {
console.error('A callback has failed.');
}
});
};
var test = Object.create(new Minimitter);
test.on("user", function (name) {
console.log("Username:", name)
})
test.emit("user", "Bob")
console.log("Hello world")
setTimeout(() => console.log("Hello timeout"), 50)
console.log("Hello JS")
console.log("Hello world")
console.log("Hello JS")
console.log("Hello timeout")
export default class Request extends Component {
constructor() {
super();
this.state = {
checked: false
}
this.handleClick = this.handleClick.bind(this);
}
this.handleClick() {
this.setState({
checked: !this.state.checked
})
}
render() {
const {checked} = this.state
return (
<div class="block" onClick={ this.handleClick } role="button" tabIndex={ 0 }>
<input type="radio" name="radio" id="radio" checked={checked}/>
</div>
);
}
}
Array.prototype.asyncEach = function (each, done) {
var i = -1, a = this
function iter() {
if (++i === a.length) { done && done(); return }
each.call(a, a[i], iter)
}
iter()
}
// Example
;(new Array(10)).asyncEach(function (item, next) {
setTimeout(function () {
console.log("tick")
next()
}, 1000)
}, function () {
console.log("done")
})