Estou trabalhando com o Javascript (ES6) / FaceBook reagindo e tentando obter os 3 primeiros elementos de uma matriz que varia em tamanho. Eu gostaria de fazer o equivalente ao Linq take (n).
No meu arquivo Jsx, tenho o seguinte:
var items = list.map(i => {
return (
<myview item={i} key={i.id} />
);
});
Então, para obter os 3 primeiros itens que tentei
var map = new Map(list);
map.size = 3;
var items = map(i => {
return (<SpotlightLandingGlobalInboxItem item={i} key={i.id} />);
});
Isso não funcionou, pois o mapa não possui uma função definida.
Você pode por favor ajudar?
javascript
reactjs
user1526912
fonte
fonte
list.slice(0, 3);
e depois repetir isso?Respostas:
Acredito que você está procurando:
fonte
Para obter os primeiros
n
elementos de uma matriz, usefonte
slice
função nas matrizes retorna uma cópia superficial da matriz e não modifica a matriz original. developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/...Isso pode ser surpreendente, mas a
length
propriedade de uma matriz não é usada apenas para obter o número de elementos da matriz, mas também é gravável e pode ser usada para definir o link MDN de comprimento da matriz . Isso mudará a matriz.Se o array atual não é mais necessário e você não se importa com imutabilidade ou não deseja alocar memória, ou seja, para um jogo, a maneira mais rápida é
esvaziar uma matriz
fonte
arr = []
?Não tente fazer isso usando uma função de mapa. A função de mapa deve ser usada para mapear valores de uma coisa para outra. Quando o número de entrada e saída coincide.
Nesse caso, use a função de filtro, que também está disponível na matriz. A função de filtro é usada quando você deseja selecionar seletivamente valores que atendem a determinados critérios. Então você pode escrever seu código como
fonte
Você pode filtrar usando a
index
matriz.fonte
.filter
por si só não é uma ótima opção, pelo menos não se a matriz de entrada puder ser longa..filter
percorre todos os elementos da matriz, verificando sua condição..slice
não faria isso, mas apenas extrairia os primeiros n elementos e depois pararia o processamento - o que definitivamente seria o que você deseja para uma longa lista. (Como @elQueFaltaba já disse em comentários à outra resposta.)O seguinte funcionou para mim.
Aqui está um exemplo
fonte
slice
mas no segundo você usasplice
.["Apple", "Mango"]
disso. A primeira parte da fatia não é "por onde começar a excluir"; é por onde começar a fatia. Não modifica a matriz original e não exclui nada.Com https://github.com/Siderite/LInQer, você pode acessar Enumerable.from (list) .take (3) .toArray ();
fonte
Usar filtro
Não é a melhor prática, mas outra maneira
const cutArrByN = arr.filter((item, idx) => idx < n);
fonte