freeCodeCamp/curriculum/challenges/chinese-traditional/02-javascript-algorithms-an.../basic-data-structures/iterate-through-all-an-arra...

3.2 KiB

id title challengeType forumTopicId dashedName
587d7b7b367417b2b2512b15 使用 for 循環遍歷數組中的全部元素 1 301161 iterate-through-all-an-arrays-items-using-for-loops

--description--

使用數組時,我們經常需要遍歷數組的所有元素來找出我們需要的一個或多個元素,抑或是對數組執行一些特定的操作。 JavaScript 爲我們提供了幾個內置的方法,它們以不同的方式遍歷數組,以便我們可以用於不同的場景(如 every()forEach()map() 等等)。 然而,最簡單的 for 循環不僅能實現上述這些方法的功能,而且相比之下也會更加靈活。

請看以下的例子:

function greaterThanTen(arr) {
  let newArr = [];
  for (let i = 0; i < arr.length; i++) {
    if (arr[i] > 10) {
      newArr.push(arr[i]);
    }
  }
  return newArr;
}

greaterThanTen([2, 12, 8, 14, 80, 0, 1]);

在這個函數中,我們用一個 for 循環來遍歷數組,逐一對其中的元素進行判斷。 通過上面的代碼,我們可以找出數組中大於 10 的所有元素,並返回一個包含這些元素的新數組 [12, 14, 80]

--instructions--

我們已經定義了 filteredArray 函數,它接受一個嵌套的數組 arr 和一個 elem 作爲參數,並要返回一個新數組。 arr 數組中嵌套的數組裏可能包含 elem 元素,也可能不包含。 請修改該函數,用一個 for 循環來做篩選,使函數返回一個由 arr 中不包含 elem 的數組所組成的新數組。

--hints--

filteredArray([[10, 8, 3], [14, 6, 23], [3, 18, 6]], 18) 應返回 [[10, 8, 3], [14, 6, 23]]

assert.deepEqual(
  filteredArray(
    [
      [10, 8, 3],
      [14, 6, 23],
      [3, 18, 6]
    ],
    18
  ),
  [
    [10, 8, 3],
    [14, 6, 23]
  ]
);

filteredArray([["trumpets", 2], ["flutes", 4], ["saxophones", 2]], 2) 應返回 [["flutes", 4]]

assert.deepEqual(
  filteredArray(
    [
      ['trumpets', 2],
      ['flutes', 4],
      ['saxophones', 2]
    ],
    2
  ),
  [['flutes', 4]]
);

filteredArray([["amy", "beth", "sam"], ["dave", "sean", "peter"]], "peter") 應返回 [["amy", "beth", "sam"]]

assert.deepEqual(
  filteredArray(
    [
      ['amy', 'beth', 'sam'],
      ['dave', 'sean', 'peter']
    ],
    'peter'
  ),
  [['amy', 'beth', 'sam']]
);

filteredArray([[3, 2, 3], [1, 6, 3], [3, 13, 26], [19, 3, 9]], 3) 應返回 []

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

filteredArray 函數中應使用 for 循環。

assert.notStrictEqual(filteredArray.toString().search(/for/), -1);

--seed--

--seed-contents--

function filteredArray(arr, elem) {
  let newArr = [];
  // Only change code below this line

  // Only change code above this line
  return newArr;
}

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

--solutions--

function filteredArray(arr, elem) {
  let newArr = [];
  for (let i = 0; i<arr.length; i++) {
    if (arr[i].indexOf(elem) < 0) {
      newArr.push(arr[i]);
    }
  }
  return newArr;
}