Подскажите, пожалуйста, по задаче:
Есть три массива, первый это время, тут главное hours, (car, bike - всегда нули). Второй и третий массив это данные которые приходят порознь, два сразу только для примера.
let hours = [
{0: "hour":0, 'car':0, 'bike': 0},
{1: "hour":1, 'car':0, 'bike': 0},
{2: "hour":2, 'car':0, 'bike': 0},
{3: "hour":3, 'car':0, 'bike': 0},
{4: "hour":4, 'car':0, 'bike': 0},
{5: "hour":5, 'car':0, 'bike': 0},
{6: "hour":6, 'car':0, 'bike': 0},
{7: "hour":7, 'car':0, 'bike': 0},
];
let first = [ {0: "hour":5, 'car':10, 'bike': 10}, {1: "hour":8, 'car':20, 'bike': 0}, {2: "hour":9, 'car':30, 'bike': 0}, {3: "hour":10, 'car':40, 'bike': 0}, ];
let second = [ {0: "hour":0, 'car':11, 'bike': 12}, {1: "hour":7, 'car':15, 'bike': 25}, {2: "hour":8, 'car':20, 'bike': 30}, {3: "hour":9, 'car':10, 'bike': 30}, {4: "hour":10, 'car':120, 'bike': 140}, ]; Как можно сделать так чтобы я мог соединять массив времени с другим массивом и заменять недостающие данные, к примеру:
hours + first, должно выйти:
first = [
// в first отсутствует hour:0,1,2,3,4, значит нужно добавить с массива hours
{0: "hour":0, 'car':0, 'bike': 0},
{1: "hour":1, 'car':0, 'bike': 0},
{2: "hour":2, 'car':0, 'bike': 0},
{3: "hour":3, 'car':0, 'bike': 0},
{4: "hour":4, 'car':0, 'bike': 0},
// дальше добавляем то что было в first
{5: "hour":5, 'car':10, 'bike': 10},
// с hours, потому что в first нету 6,7
{6: "hour":6, 'car':0, 'bike': 0},
{7: "hour":7, 'car':0, 'bike': 0},
{8: "hour":8, 'car':20, 'bike': 0},
{9: "hour":9, 'car':30, 'bike': 0},
{10: "hour":10, 'car':40, 'bike': 0},
];
hours + second:
second = [ // Данные с second {0: "hour":0, 'car':11, 'bike': 12}, // Данные с hours {1: "hour":1, 'car':0, 'bike': 0}, {2: "hour":2, 'car':0, 'bike': 0}, {3: "hour":3, 'car':0, 'bike': 0}, {4: "hour":4, 'car':0, 'bike': 0}, {5: "hour":5, 'car':0, 'bike': 0}, {6: "hour":6, 'car':0, 'bike': 0}, // Данные с second должны затереть данные с нулями из hours {7: "hour":7, 'car':15, 'bike': 25}, {8: "hour":8, 'car':20, 'bike': 30}, {9: "hour":9, 'car':10, 'bike': 30}, {10: "hour":10, 'car':120, 'bike': 140}, ];
Грубо говоря соеденить два массива. Честно, много перепробовал, но результата;
Подскажите, пожалуйста.
let hours = [
{"hour":1, 'car':0, 'bike': 0},
{"hour":0, 'car':0, 'bike': 0},
{"hour":2, 'car':0, 'bike': 0},
{"hour":3, 'car':0, 'bike': 0},
{"hour":4, 'car':0, 'bike': 0},
{"hour":5, 'car':0, 'bike': 0},
{"hour":6, 'car':0, 'bike': 0},
{"hour":7, 'car':0, 'bike': 0}
]
let first = [
{"hour":5, 'car':10, 'bike': 10},
{"hour":8, 'car':20, 'bike': 0},
{"hour":9, 'car':30, 'bike': 0},
{"hour":10, 'car':40, 'bike': 0}
]
let second = [
{"hour":0, 'car':11, 'bike': 12},
{"hour":7, 'car':15, 'bike': 25},
{"hour":8, 'car':20, 'bike': 30},
{"hour":9, 'car':10, 'bike': 30},
{"hour":10, 'car':120, 'bike': 140}
]
console.log(combine(hours, first));
console.log(combine(hours, second));
function combine(array1, array2){
var map1 = array1.reduce((prev, item) => {
prev[item.hour] = item;
return prev;
}, {});
var map2 = array2.reduce((prev, item) => {
prev[item.hour] = item;
return prev;
}, {})
for (var key in map2){
map1[key] = map2[key]
}
var result = []
for (var key in map1){
result.push(map1[key])
}
return result
}
Не знаю насколько это правильно, но вот что у меня получилось:
let hours = [
{"hour":1, 'car':0, 'bike': 0},
{"hour":0, 'car':0, 'bike': 0},
{"hour":2, 'car':0, 'bike': 0},
{"hour":3, 'car':0, 'bike': 0},
{"hour":4, 'car':0, 'bike': 0},
{"hour":5, 'car':0, 'bike': 0},
{"hour":6, 'car':0, 'bike': 0},
{"hour":7, 'car':0, 'bike': 0}
]
let first = [
{"hour":5, 'car':10, 'bike': 10},
{"hour":8, 'car':20, 'bike': 0},
{"hour":9, 'car':30, 'bike': 0},
{"hour":10, 'car':40, 'bike': 0}
]
let second = [
{"hour":0, 'car':11, 'bike': 12},
{"hour":7, 'car':15, 'bike': 25},
{"hour":8, 'car':20, 'bike': 30},
{"hour":9, 'car':10, 'bike': 30},
{"hour":10, 'car':120, 'bike': 140}
]
function add(left, right) {
for (let i = 0; i < left.length; i++) {
if (left[i].hour != right[i].hour) {
right.splice([i], 0, left[i]);
}
}
}
add(hours, first);
add(hours, second);
console.log(first);
console.log(second);
let hours = [
{"hour":0, 'car':0, 'bike': 0},
{"hour":1, 'car':0, 'bike': 0},
{"hour":2, 'car':0, 'bike': 0},
{"hour":3, 'car':0, 'bike': 0},
{"hour":4, 'car':0, 'bike': 0},
{"hour":5, 'car':0, 'bike': 0},
{"hour":6, 'car':0, 'bike': 0},
{"hour":7, 'car':0, 'bike': 0},
];
let first = [
{"hour":5, 'car':10, 'bike': 10},
{"hour":8, 'car':20, 'bike': 0},
{"hour":9, 'car':30, 'bike': 0},
{"hour":10, 'car':40, 'bike': 0},
];
let second = [
{"hour":0, 'car':11, 'bike': 12},
{"hour":7, 'car':15, 'bike': 25},
{"hour":8, 'car':20, 'bike': 30},
{"hour":9, 'car':10, 'bike': 30},
{"hour":10, 'car':120, 'bike': 140},
];
hours.push(...second)
console.log(hours);
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Сначала нужно нарисовать что-то типа шахматной доски(то есть квадрат состоящий из белых и черных ячеек) Потом заполнить это рандомными фишками...
Проблема простая, но все что я находил в интернете не работаетНичего не изменяется
При каких уровнях изоляций в mysql, одновременные запросы потоков встают в очередь?