Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 03.07.2020, 13:33
Аспирант
Отправить личное сообщение для misha.korolcov Посмотреть профиль Найти все сообщения от misha.korolcov
 
Регистрация: 05.09.2019
Сообщений: 80

цикл с условия
Доброго времени суток , есть масив , и мне надо выводил только один элемент не повторяющий тоись
audi , bmv , mers
я не знаю как сделать вот то что у меня вишло , не знаю может както через if()
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
 <select id="car" onchange="filterManeger(event)">
</select>   
    
<script>
let arr = [
    {car: 'audi' , color: 'red'},
    {car: 'audi' , color: 'black'},
    {car: 'bmv' , color: 'black'},
    {car: 'bmv' , color: 'red'},
    {car: 'mers' , color: 'black'},
]

 document.getElementById('car').innerHTML = '';
        let sbody = '';
        arr.forEach(car => {
           sbody += `
                    <option value="${car.car}">${car.car}</option>
            ` 
        });
        document.getElementById('car').innerHTML = sbody;
    

console.log(arr);
</script>    
</body>
</html>
Ответить с цитированием
  #2 (permalink)  
Старый 03.07.2020, 14:19
Аспирант
Отправить личное сообщение для misha.korolcov Посмотреть профиль Найти все сообщения от misha.korolcov
 
Регистрация: 05.09.2019
Сообщений: 80

const uniCar = [...new Set(arr.map(item => item.car))];
console.log(uniCar); //["audi", "bmv", "mers"]
Ответить с цитированием
  #3 (permalink)  
Старый 03.07.2020, 14:36
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 28,906

misha.korolcov,
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
<select id="car" onchange="filterManeger(event)">
</select>

<script>
let arr = [
    {car: 'audi' , color: 'red'},
    {car: 'audi' , color: 'black'},
    {car: 'bmv' , color: 'black'},
    {car: 'bmv' , color: 'red'},
    {car: 'mers' , color: 'black'},
]
const select = document.getElementById('car');
select.options.length = 0;
arr.forEach(({car}) => {
((select.value = car) == select.value) || select.append(new Option(car, car))
        });
</script>
</body>
</html>
Ответить с цитированием
  #4 (permalink)  
Старый 03.07.2020, 14:41
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 12,781

misha.korolcov, если ты собрался формировать строку, тогда удобнее использовать не forEach(), а reduce()...

let arr = [
    {car: 'audi' , color: 'red'},
    {car: 'audi' , color: 'black'},
    {car: 'bmv' , color: 'black'},
    {car: 'bmv' , color: 'red'},
    {car: 'mers' , color: 'black'},
]
let sbody = arr.reduce(function(Val,Obj){
	return Val+(function(Name){
		if (Val.indexOf(Name)!=-1) { return '';}
		return '<option value="'+Name+'">'+Name+'</option>';
	})(Obj.car);
},'');
alert(sbody);
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Цикл while и for проблема с выполнением условия. Hailrake Общие вопросы Javascript 5 19.06.2018 22:46
Цикл завершается не дожидаясь выполнения функции leonoff jQuery 2 13.08.2014 15:02
Как подчинить себе цикл wreder jQuery 17 20.11.2013 20:17
Цикл завешивает страницу, помогите Romingood jQuery 5 19.10.2013 13:30
Бесконечный цикл Sundro Общие вопросы Javascript 8 08.08.2011 12:58