Имеется следующий код
var bool = [false, false, false];
var names = ["Банан", "Яблоко", "Груша"];
var prices = [10, 20, 30]
var text;
a = names.indexOf(text) >= 0;
b = !names.indexOf(text) >= 0;
function checkbuy (names) {
while (text != 0)
{
text = prompt("cписок продуктов: " + names)
names.sort(function(){ }) **//ВОТ ЭТА СТРОКА!**
if (names.indexOf(text) >= 0)
{
bool[names.indexOf(text)] = true;
alert("Продукт " + text.toUpperCase() + " куплен!");
}
for (i = 0; i < names.length; i++)
{
var myList = [ [names[i], prices[i], bool[i]], [names[i], prices[i], bool[i]], [names[i], prices[i], bool[i]] ];
// alert(myList[i][0]);
alert(names[i])
}
alert(names);
}
}
Хочу отсортировать массив таким образом, чтобы сначала шли значения, выведенные в prompt, и совпадающие с элементами массива, а потом лишь те, которые в prompt не выведены. Как реализовать подобную сортировку массива? Ломаю голову, не могу придумать.
Заранее благодарю!
Тут правда есть жесткий формат того, что должно быть в prompt
. Не учитываются значения, которых нет в names
+ лишние символы будут только мешать. Но это уже дело калибровки и форматирования
const names = ["Банан", "Яблоко", "Груша", "Вишня", ];
const userInput = prompt('список товаров:', names);
const userNames = userInput.split(',');
console.log(names.sort((a, b) => {
// Немного js магии, Number(true) === 1, Number(0) === 0
// Функция sort должна возвращать число, в зависимости от того
// какой элемент должен идти первым.
return Number(userNames.includes(b)) - Number(userNames.includes(a));
}));
Подробнее про sort
UPD
Чуть более оптимизированный вариант без сортировки
const names = ["Банан", "Яблоко", "Груша", "Вишня", ];
const userInput = prompt('список товаров:', names);
const userNames = userInput.split(',');
const result = {included: [], excluded: []};
names.forEach(name => {
userNames.includes(name) ?
result.included.push(name) :
result.excluded.push(name);
});
console.log(...result.included, ...result.excluded);
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
ожидалось, что секунды будут выводиться в формате 01 02 03, но вместо этого выводятся 1 2 3, при чем когда я вывожу не только секунды, а и минуты
Как можно произвести замены только по захваченному регуляркой тексту? Есть файл, где нужно поменять содержимое определённых теговПример:
Всем приветЕсть необходимость переводить отдельные строки с одного языка на другой
Здраствуйте, подскажите, как правильно пользоваться GitHub? Через npm умею устанавливать пакеты, а как их правильно подключить к проекту не могу...