我有一個數組&文字對象這樣如何檢查文本對象是一個Javascript數組
var arr = [{a: 1}, {a: 2}, {a: 3}];
var e1 = {a: 1};
我想要實現的功能(例如:containsObject(e1, arr)
)我應該在這種情況下返回true。
請告訴我的方式沒有壓倒一切的基礎類Array.prototype.indexof
我有一個數組&文字對象這樣如何檢查文本對象是一個Javascript數組
var arr = [{a: 1}, {a: 2}, {a: 3}];
var e1 = {a: 1};
我想要實現的功能(例如:containsObject(e1, arr)
)我應該在這種情況下返回true。
請告訴我的方式沒有壓倒一切的基礎類Array.prototype.indexof
試試這個:
var arr = [{a: 1}, {a: 2}, {a: 3}];
var e1 = {a: 1};
for (var i=0; i<arr.length; i++) {
var found = true;
for (var key in e1) {
if (e1[key] != arr[i][key]) {
found = false;
break;
}
}
if (found) {
alert('found at index ' + i);
break;
}
}
謝謝jcubic。 –
這可能會幫助你。
function containsObject(e1, arr) {
var i;
for (i = 0; i < arr.length; i++) {
if (arr[i] === e1) {
return true;
}
}
return false;
}
這不適用於對象'{a:10}!= {a:10}' – jcubic
您無法通過運算符'=' ==' –
var arr = [{a: 1}, {a: 2}, {a: 3}];
var e1 = {a: 1};
function containsObject(e1, arr) {
var i;
for (i = 0; i < arr.length; i++) {
if (JSON.stringify(arr[i]) === JSON.stringify(e1)) {
alert("we found it")
}else{
alert(JSON.stringify(e1)+"not equal to"+JSON.stringify(arr[i]))
}
}
}
containsObject(e1, arr)
,如果你不介意的字符串對比一下,用這種方式。 JSON.stringify()將對象轉換爲json字符串,我認爲你期望在人類視覺中比較它們,那就是它。
我不認爲2個不同的對象可以是compared.they從對象2例,
感謝Ma Yubo。我們保存一個循環,但我可以信任函數JSON.stringify。有沒有什麼情況JSON.stringify會有什麼問題? –
還不知道,JSON.stringify應該可以用於任何對象 –
是的,我知道函數JSON.stringify。我只是考慮在什麼情況下,這種方式是錯誤的(還沒有找到)。我更喜歡你的方式並使用它,jcubic的方式是正確的。我想過了,但我害怕2循環:)再次感謝 –
這可能會幫助你
function containsObject(e1, arr)
{
var k=false;
ap=arr.filter(function(a){
if(JSON.stringify(a) === JSON.stringify(e1))
{k=true;
return(true);}
});
(k===true)?console.log("in array"):console.log("not in array");
}
var arr = [{a: 1}, {a: 2}, {a: 3}];
var e1 = {a: 1};
containsObject(e1,arr);
由於陣列不包含任何方法,因此我們可以使用串化來比較對象。
'containsObject'應該以這樣一種方式實現,即你還可以傳遞'key'在'base-array'中進行測試 – Rayon
http://stackoverflow.com/questions/8217419/how-to-determine-if- javascript-array-contains-object –
http://stackoverflow.com/questions/7364150/find-object-by-id-in-an-array-of-javascript-objects – Bergi