Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   цикл с условия (https://javascript.ru/forum/misc/80626-cikl-s-usloviya.html)

misha.korolcov 03.07.2020 13:33

цикл с условия
 
Доброго времени суток , есть масив , и мне надо выводил только один элемент не повторяющий тоись
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>

misha.korolcov 03.07.2020 14:19

const uniCar = [...new Set(arr.map(item => item.car))];
console.log(uniCar); //["audi", "bmv", "mers"]

рони 03.07.2020 14:36

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>

ksa 03.07.2020 14:41

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);


Часовой пояс GMT +3, время: 04:04.