2013-02-21 62 views
0

對於任何編碼背景都較少,我試圖從現有數組中獲取過濾數組,並在javascript中使用indexof條件。如何在JavaScript中過濾條件索引的數組

我的代碼:

function CheckIfexists(element) { 
    return (element.indexOf(formInput) > -1); 
} 
var filtered = data.filter(CheckIfexists); 
window.alert(filtered[1] + " " + filtered[2] + " " + filtered[3]); 

上面的代碼是不工作

ADDL信息:

的formInput是從形式費爾德拍攝的輸入。

var formInput = document.getElementById("textReader").value; 

數據陣列我被...

var data = oRequest.responseText.split("\r\n"); 

另一種方式我試圖..

function CheckIfexists(formInput) { 
    for (var i = 0; i < data.length; i += 1) { 
     if (data[i].indexOf(formInput) > -1) { 
      return false; 
     } 
    } 
    return true; 
} 

var filtered = data.filter(CheckIfexists); 
window.alert(filtered[1] + " " + filtered[2] + " " + filtered[3]); 

上面的代碼也沒有工作..


DONOT懷疑數據陣列和的formInput怎麼一回事,因爲我檢查每個元素與代碼,人

for(var i=0; i<data.length; i++) { 
    if (data[i] === formInput) { 
     alert("You want to retrieve report?"); 
     didntfind = false; 
     break; 
    } 
} 

    if (didntfind) alert("sorry. part not found"); 

和我得到的那些匹配和不匹配。 Addl注:數據數組中有部分名稱,forminput可能與數組中的元素不完全相同,也可能是部分數據。 我的努力是在新數組中獲得過濾後的數組。

+0

你張貼看起來像它應該工作的第一個代碼。你能發佈一些關於你的數組和元素的更多信息嗎?也就是說,你可以發佈'data'的前幾個元素,併發布'formInput'是什麼? – Xymostech 2013-02-21 14:56:21

+0

看看下劃線它是爲這種類型的東西而構建的http://underscorejs.org/#filter – RubbleFord 2013-02-22 09:42:52

回答

0

函數CheckIfexists將在數組中的每個元素上被調用。閱讀並運行此代碼以便更好地理解:

var data = [1,2,3,4,10]; 
console.log(data.filter(function (item) { return item > 3; })); 

我可以看到你想要做什麼。我想,你需要寫類似的東西:

var formInput = document.getElementById("textReader").value; 
var data = oRequest.responseText.split("\r\n"); 

function CheckIfExists(element) { 
    return (element === formInput); 
}; 

var filtered = data.filter(CheckIfexists); 

而且在javascript cheking元素的平等時(「1」 == 1,例如!)注意。

+0

不,他們說他們希望它進行部分匹配,這就是爲什麼他們在第一個時候使用'indexOf'例。 – Xymostech 2013-02-21 15:01:23

+0

@Xymostech,是的,我的英文不好使我失望:)。我們需要更多的代碼...) – Microfed 2013-02-21 15:06:10

+0

是的,我需要部分匹配。 – harsha 2013-02-22 03:13:51

-1
var newArray = []; 
for(var i=0;i<data.length;i++) { 
    var item = data[i]; 
    if(item.indexOf(formInput1) > -1) { 
     newArray.push(item); 
    } 
}); 

我得到了它..那種上面的代碼爲我工作...再次 謝謝..