# Iterate Through All an Arrays Items Using For Loops

Hey actually i have completed this challenge but i want to know that if there is more efficient way to write this code .

# Here is my code.

``````
function filteredArray(arr, elem) {
let newArr = [],row=[],item=true;
for (let i = 0; i < arr.length; i++) {
item=true;
row=[];
for (let j = 0; j < arr[i].length; j++) {
if(arr[i][j]==elem)
{
item=false;
break;
}
else{
row.push(arr[i][j]);
item=true;
}
}
if(item)
newArr.push(row);
}

// change code above this line
return newArr;
}

// change code here to test different cases:
console.clear();
console.log(filteredArray([[10, 8, 3], [14, 6, 23], [3, 18, 6]], 18));
``````

function filteredArray(arr, elem) {
let newArr = [];
// change code below this line
for (let index in arr) {
if((arr[index].indexOf(elem) == -1)) {
newArr.push(arr[index])
}
}
// change code above this line
return newArr;
}

2 Likes

Iâ€™ve edited your post for readability. When you enter a code block into the forum, precede it with a line of three backticks and follow it with a line of three backticks to make easier to read. See this post to find the backtick on your keyboard. The â€śpreformatted textâ€ť tool in the editor (`</>`) will also add backticks around text.

1 Like

thanks

thanks man <3 this is awesome. will try to improve my code.

Well, this passes:

``````function filteredArray(arr, elem) {
let newArr = []
for (let i=0; i<arr.length; i++) {
if (!arr[i].includes(elem))
newArr.push(arr[i])
}
// change code above this line
return newArr;
}
``````

But I think this is a more â€śmodernâ€ť approach:

``````const filteredArray = (arr, elem) => arr.filter(a => !a.includes(elem))
``````

but it will fail the test because you are required to use a `for` loop.

1 Like

awesome you just did this in one line â€¦ thanks

[spoiler]```
function filteredArray(arr, elem) {
let newArr = [];
newArr=[â€¦arr];
for(let i=0;i<newArr.length;i++){
if(newArr[i].indexOf(elem)!=-1){
newArr.splice(i,1);
â€“i;
}

}
return newArr;
}

console.log(filteredArray([[3, 2, 3], [1, 6, 3], [3, 13, 26], [19, 3, 9]], 3));

1 Like

You can do it simply using indexOf from the previous challenges:

``````function filteredArray(arr, elem) {
let newArr = [];
// change code below this line
for (let i = 0; i < arr.length; i++) {
if (arr[i].indexOf(elem) === -1) {
newArr.push(arr[i])
}
}
// change code above this line
return newArr;
}
``````