Lista com metodologia lambda

by Orlando Fernandes M. Jr.

HTML

<script src="https://rawgit.com/ohrlando/List_Lambda_js/master/list-latest.js"></script>
<ul id="output"></ul>
<span id="label"></span>

<br />
<span id="label2"></span>

<br />
<span id="label3"></span>

<br />
<span id="label4"></span>

<br />
<br />Completos
<ul id="completa">
    <li class="selected">item 1</li>
    <li>item 2</li>
    <li>item 3</li>
    <li class="selected">item 4</li>
</ul>Selecionados
<ul id="ex2">
    <li class="selected">item 1</li>
    <li>item 2</li>
    <li>item 3</li>
    <li class="selected">item 4</li>
</ul>Removidos
<ul id="removidos"></ul>

CSS

#completa .selected {
    color: red;
}
.selected {
    font-weight: bold;
}

JavaScript

/*
Autor: Orlando
List com lambda v 1.2.0
https://github.com/ohrlando/List_Lambda_js
*/
//pratique aqui:

//método para ajudar a adicionar novos elementos
var append = function (value) {
    var li = document.createElement("LI");
    li.textContent = value;
    document.getElementById("output").appendChild(li);
};

//pessoas
var lista = new List([{
    nome: "Orlando",
    idade: 23
}, {
    nome: "Leo",
    idade: 26
}, {
    nome: "Matheus",
    idade: 16
}, {
    nome: "Maysa",
    idade: 13
}, {
    nome: "Roger",
    idade: 89
}, {
    nome: "wilker",
    idade: 55
}, ]);

//WHERE + SELECT
//idade > 23
var nomes = lista
	.where(item => item.idade > 23).
  select(function (item) {
    append(item.nome); //adiciona na lista
    return item.nome;
}).toArray();

//FIRST
//primeiro com condição
console.log("\nPrimeiro com a idade igual a 13 é: ", lista.first(item => item.idade == 13).nome);

//ANY
//verifica se tem algum na lista com a condição
if (lista.any(item => item.idade > 90)) {
    document.getElementById("label").textContent = "Tem 3ª idade na lista";
} else {
    document.getElementById("label").textContent = "Não tem 3ª idade na lista";
}

//FIRST & LAST
//primeiro sem condição
document.getElementById("label2").textContent = "Primeiro é: ".concat(lista.first().nome);
//último
document.getElementById("label3").textContent = "Último é: ".concat(lista.last().nome);
//primeiro letra M
document.getElementById("label3").textContent = "Primeiro com letra M é:".concat(lista.first(function (item) { return item.nome[0] == "M"; }).nome);

//WHERE + EACH
//elementos em #ex2 > li
var items = new List($("#ex2 > li"));
items.where(li => !li.classList.contains("selected")).each(function (li) {
    //remove os não selecionados
    li.parentNode.removeChild(li);
});

//WHERE + EACH
//has class selected
items.where(li => !li.classList.contains("selected")).each(function (li) {
    //adiciona os não selecionados
    $("#removidos").append(li);
});

//DISTINCTS
//lista de...