查找密钥';数组中对象的s值-Javascript
我已经尝试了很多方法让它正常工作,但我不能 我的问题是: 我有一个javascript中的对象数组,看起来像这样:查找密钥';数组中对象的s值-Javascript,javascript,arrays,object,loops,Javascript,Arrays,Object,Loops,我已经尝试了很多方法让它正常工作,但我不能 我的问题是: 我有一个javascript中的对象数组,看起来像这样: var myArrOfObjs = []; var myObject1 = {}; myObject1.key = '1234'; myObject1.label = 'Richard Clifford'; myArrOfObjs.push( myObject1 ); 我需要做一些事情,比如: if( !containsObject( myObject1, myArrOfOjb
var myArrOfObjs = [];
var myObject1 = {};
myObject1.key = '1234';
myObject1.label = 'Richard Clifford';
myArrOfObjs.push( myObject1 );
我需要做一些事情,比如:
if( !containsObject( myObject1, myArrOfOjbs ) ){
// Do stuff
}
我需要containsObject
函数来检查找到的对象(如果有)中的键值,因此如果containsObject(myObject1,myArrOfOjbs)
找到该对象,我需要检查该对象的键值是否与我当前尝试推送的键值相同
我之所以需要它来检查键,是因为我已经尝试了这个函数,我在StackOverflow的其他地方发现了这个函数,但它不太管用
function containsObject(obj, list) {
var i;
for (i = 0; i < list.length; i++) {
if (list[i] == obj) {
return true;
}
}
return false;
}
函数containsObject(对象,列表){
var i;
对于(i=0;i
即使对象已经包含该对象,它仍然会将该对象推送到数组中
如果你需要澄清什么,请告诉我,我意识到这不是最容易阅读/理解的帖子
谢谢 您需要更改相等性测试以比较键:
function containsObject(obj, list) {
var i;
for (i = 0; i < list.length; i++) {
if (list[i].key === obj.key) {
return true;
}
}
return false;
}
函数containsObject(对象,列表){
var i;
对于(i=0;i
您需要更改相等性测试以比较键:
function containsObject(obj, list) {
var i;
for (i = 0; i < list.length; i++) {
if (list[i].key === obj.key) {
return true;
}
}
return false;
}
函数containsObject(对象,列表){
var i;
对于(i=0;i
我得到了这个函数,它被添加到数组对象的原型链中,因此您可以调用list.hasObject(obj)
这方面的小麻烦:我得到了这个函数,它被添加到数组对象的原型链中,因此您可以调用
list.hasObject(obj)
小提琴:也许这不是你想要的答案,但我想知道,如果你有一个键,为什么不使用对象而不是数组:
var objectList = {};
var myObject { key : '1234', label : 'Richard Clifford' };
objectList[myObject.key] = myObject;
因此,如果要迭代:
for (var key in objectList) {
if (objectList.hasOwnProperty(key)
alert(key);
}
如果要使用给定的密钥访问对象,只需:
alert(objectList['1234'].label);
也许这不是您要寻找的答案,但我想知道,如果您有一个键,为什么不使用对象而不是数组:
var objectList = {};
var myObject { key : '1234', label : 'Richard Clifford' };
objectList[myObject.key] = myObject;
因此,如果要迭代:
for (var key in objectList) {
if (objectList.hasOwnProperty(key)
alert(key);
}
如果要使用给定的密钥访问对象,只需:
alert(objectList['1234'].label);
这个containsObject方法应该有效。调用代码可能有问题。你能展示它吗(如果可能的话,制作一个自动的简化代码来显示问题)?这个containsObject方法应该可以工作。调用代码可能有问题。你能展示一下吗(如果可能的话,制作一个自动简化的代码来显示问题)?效果很好。显示了我对javascript的了解有多少。我才刚刚开始学。所以非常感谢!非常感谢!这非常有效。显示了我对javascript的了解有多少。我才刚刚开始学。所以非常感谢!非常感谢!回答得好,但我同意上面的说法。无论如何谢谢你!回答得好,但我同意上面的说法。无论如何谢谢你!原因是因为我正在为第三方软件编写扩展,它使用一个对象数组。谢谢你给我的建议,我将使用对象:)原因是因为我正在为第三方软件编写扩展,它使用对象数组。感谢您的建议,以供将来参考。我将使用对象:)