2016-01-12 40 views
0

JavaScript中檢查數組對象並檢查數組對象的某個屬性中是否存在某個值的最佳方法是什麼? 例如:我有一些對象如下: [{name:「team1」,members:3},{name:「bestteam」,members:4}] 現在我想添加一個新對象,但我想要檢查該對象屬性「名稱」在添加之前不存在於數組中查找對象數組中的重複值

+2

你必須要更加具體,並張貼的你考慮重複的一些例子是 – adeneo

+0

可能重複[如何檢查對象數組是否具有重複的屬性值?](http://stackoverflow.com/questions/30735465/how-can-i-check-if-the-array-of- objects-have-duplicate-property-values) – gfullam

+0

重複值vs某些屬性?有什麼問題嗎? –

回答

2

試試這個

function checkIfNameExists(arr, newName) { 
    return arr.some(function(e) { 
     return e.name === newName; 
    }); 
} 

其中ARR是您的陣列和了newName是檢查名稱。

你也可以讓它少特設通過將屬性來作爲比較參數,像這樣

function checkIfNameExists(arr, prop, newVal) { 
    return arr.some(function(e) { 
     return e[prop] ? e[prop] === newVal : false; 
    }); 
} 
1

您可以使用簡單的循環。這裏是幫助你找出鍵值是否在數組中的函數。

function keyExist(value, array) { 
    for(var i in array) { 
     for(var k in array[i]) 
      if(array[i][k] === value) { 
       console.log(value + ' is in array!'); 

       return true; 
      } 
    } 

    return false; 
} 

至於你比如你可以改變第二循環

for(var k in array[i]) 
    if(k === value) { return true; } 

if(array[i].name === value) { return true; } 
0

我沒有時間從我以前的代碼響應,但在這裏,也許有人會優化它.. 。

function JSONRemoveDuplicates(JSONDATA) { 
    var uniqueNames = []; 
    $.each(JSONDATA, function (i, el) { 
     if (!existInJSON(uniqueNames, el) > 0) { uniqueNames.push(el); } 
    }); 
    return uniqueNames; 
} 


function existInJSON(jsondata, el) { 
    var ret = 0; 
    $(jsondata).each(function (index, data) { 
     if (data.id == el.id) 
      ret++; 
    }) 
    return ret > 0; 
} 
1

ass uming你說一個對象等於對象當且僅當他們爲每個元素完全相同的元素和值:

var map = {}; 
for (var i = 0; i < arr.length; i++) { 
    var index = JSON.stringify(arr[i]); 
    if (!map[index]) { 
     map[index] = 1; 
    } else { 
     map[index]++; 
    } 
} 
for (var key in map) { 
    if (map[key] > 1) { 
     console.log ('duplicate found for:'); 
     console.log (JSON.parse (key)); 
    } 
} 

只是與一些對象定義數組「改編」,並檢查了

1

你可以迭代數組並遍歷數組的鍵並檢查某些屬性是否具有所需的值。

var data = [{ prop1: 'one', prop2: 'two' }, { prop3: 'three', prop4: 'four' }]; 
 

 
function find(v, data) { 
 
    data.forEach(function (a, i) { 
 
     Object.keys(a).forEach(function (k) { 
 
      if (a[k] === v) { 
 
       document.write(v + ' found in [' + i + '].' + k); 
 
      } 
 
     }); 
 
    }); 
 
} 
 

 
find('three', data);