2017-01-13 51 views
-1

我有ID和描述在磁盤陣列:如何使用jQuery從數組中選擇單個項目?

var tablica = [{"3":"asdasd asd"},{"19":"asddas fff"},{"111111":"adas asf asdff ff"},{"4":"re"},{"5":"asdasd"},{"6":"we"},{"7":"asdasdgg"},{"9":"asdasdasd"},{"16":"sdads"},{"10":"asdgg"},{"11":"ggg"}];

如何選擇使用jQuery或JavaScript ID單一描述?

+1

哪裏'ID'? – Satpal

+0

@Satpal我確定OP在'{「3」中的意思是:「asdasd asd」}','3'是'id'。 – Rajesh

+0

每個數組中的第一個元素(3,19,3,4等) – GSMX

回答

-1

嗯,這是一個有點複雜,因爲你有一個對象數組

你可以分析整個陣列,併爲它的每個對象,檢查其是否具有希望的關鍵:

var tablica = [{"3":"asdasd asd"},{"19":"asddas fff"},{"3":"adas asf asdff ff"},{"4":"re"},{"5":"asdasd"},{"6":"we"},{"7":"asdasdgg"},{"9":"asdasdasd"},{"16":"sdads"},{"10":"asdgg"},{"11":"ggg"}]; 
 

 
var wantedId = "3"; // the ID you actually search 
 
var wantedObj; 
 

 
tablica.map(function(obj) { 
 
    if (wantedId in obj) { 
 
     wantedObj = obj; 
 
    } 
 
}); 
 

 
console.log(wantedObj);

無論如何,你應該可以解決你的數據結構:您的陣列中的每個對象應該有一個屬性id和PROPERT Ÿvalue(或類似的東西)

var tablica = [ 
    { 
     id: "3", 
     value: "asdasd asd" 
    }, 
    { 
     id: "19", 
     value: "asddas fff" 
    } 
]; 
+1

首先,不使用'return'使用'.map'只是浪費功能。其次,我寧願使用'filter'或'find',因爲搜索是他們的目標。第三,你**不應該**回答重複的問題。 – Rajesh

1

使用ES6,

var tablica = [{"3":"asdasd asd"},{"19":"asddas fff"},{"3":"adas asf asdff ff"},{"4":"re"},{"5":"asdasd"},{"6":"we"},{"7":"asdasdgg"},{"9":"asdasdasd"},{"16":"sdads"},{"10":"asdgg"},{"11":"ggg"}]; 
 

 
var res = tablica.filter(x=> x["3"]) 
 
console.log(res);

+0

首先,請不要重複重複。其次,當'x [「3」]'的值爲falsey時,您的解決方案將失敗。 – Rajesh

+0

@Rajesh OP說:「我有ID和陣列中的描述」,所以在價值上有明確的描述,所以我可以假設在描述中會有非常罕見的錯誤機會。其次,如果你真的認爲它是重複的,那麼請把這個問題標記爲重複的問題,你沒有清楚。 –

+0

@Rajesh同樣我覺得你的評論,請讓我知道是否有任何重複。問題,我會標記爲你 –

1

當你在對象重複鍵,我建議使用Array#filter它並使用後,對象信息,你需要。

var data = [{ 3: "asdasd asd" }, { 19: "asddas fff" }, { 3: "adas asf asdff ff" }, { 4: "re" }, { 5: "asdasd" }, { 6: "we" }, { 7: "asdasdgg" }, { 9: "asdasdasd" }, { 16: "sdads" }, { 10: "asdgg" }, { 11: "ggg" }], 
 
    key = 3, 
 
    result = data.filter(function (o) { 
 
     return key in o; 
 
    }); 
 

 
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

+0

請不要重複重複。我知道它不是重複的,但如果OP考慮'3'作爲ID,它更好地建議使用更好的數據結構'{'id':3,value :...}'然後它變成完全重複的。 – Rajesh

1

我認爲最好的方法是轉換這個數組對象,其中的描述的關鍵將是ID。這消除了每次搜索時都需要搜索的描述。只有在您準備好對象後,您才能簡單快速地訪問該描述。

例如:

var tablica = [{"3":"asdasd asd"},{"19":"asddas fff"},{"3":"adas asf asdff ff"},{"4":"re"},{"5":"asdasd"},{"6":"we"},{"7":"asdasdgg"},{"9":"asdasdasd"},{"16":"sdads"},{"10":"asdgg"},{"11":"ggg"}]; 
 
var obj = {}; 
 
tablica.forEach(function(el){ 
 
    var id = Object.keys(el)[0]; 
 
    obj[id] = el[id]; 
 
}); 
 

 
console.log(obj['5']);

現在,如果你想獲得描述爲ID = 5,你可以方便地訪問它obj['5']

+0

請注意,你不應該重複重複。 – Rajesh

+0

@Rajesh Dublicate?我沒有看到類似的答案... –

+0

請參閱問題或Nina的回答下的評論 – Rajesh

相關問題