2015-11-04 41 views
1

我對此練習不太瞭解。在Javascript陣列的前半部分查找元素

arr = [1, 2, 3]; 
arr.indexOf(2); // 1 
arr.indexOf(4); // -1 since it doesn't exist. 

// Write a function to determine if an element 
// is in the first half of an array. 
// If an element has an odd length, round up 
// when counting the first half of an array. 
// For example, 1 and 2 are in the first half 
// arr. 
function inFirstHalf(inputArray, element) { 

} 

我不明白,數組的前半部分是什麼意思?

+1

我想這意味着,如果*的indexOf *返回一個值小於*改編的一半。如果長度爲奇數(這意味着實際上你必須向下舍入,因爲數組索引從0開始)。 – RobG

+0

@RobG你讓我的一天! – ricardoorellana

+0

謝謝@RobG,我正在參加這個課程https://www.codecademy.com/courses/javascript-intro/8/4,我被困在那個練習中。 – ricardoorellana

回答

-1

您應該使用length屬性檢索數組arr的長度。現在您必須檢查元素index是否小於length,並在長度爲奇數時向上取整。

function inFirstHalf(inputArray, element) { 
    if ((inputArray.length % 2) === 0) { 
     if ((inputArray.indexOf(element) + 1) <= (inputArray.length/2)) { 
      return true; 
     } 
    } else { 
     if ((inputArray.indexOf(element) + 1) <= Math.ceil ((inputArray.length/2))) { 
      return true; 
     } 
    } 
    return false; 
} 
+0

你能舉一些你如何測試這個的例子嗎? – 2015-11-04 04:06:41

+0

http://jsfiddle.net/zqkzjraw/6 – xourscode

+0

如果索引小於'inputArray.length/2',那麼根據定義,它也會小於該值的上限,因此第二次檢查似乎是不必要的,除非我失去了一些東西。 – 2015-11-04 06:11:07

2

中查找值通過分割原始數組創建新的陣列中的兩個:

arr.slice(0, Math.ceil(arr.length/2)) . indexOf(val)