查找密钥's数组中对象的值-Javascript
Finding a Key's Value from an object within an array - Javascript
我已经尝试了很多方法来让它正常工作,但我不能
这是我的问题:
我有一个javascript中的对象数组,看起来像这样:
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;
}
即使已经包含对象,它仍然会将对象推送到数组中。
如果你需要澄清什么,请告诉我,我意识到这不是最容易阅读/理解的帖子。
谢谢!
您需要更改相等测试来比较密钥:
function containsObject(obj, list) {
var i;
for (i = 0; i < list.length; i++) {
if (list[i].key === obj.key) {
return true;
}
}
return false;
}
我已经得到了这个函数,它被添加到Array对象的原型链中,所以您可以直接调用list.hasObject(obj)
。
Array.prototype.hasObject = (
!Array.indexOf ? function (o)
{
var l = this.length + 1;
while (l -= 1)
{
if (this[l - 1] === o)
{
return true;
}
}
return false;
} : function (o)
{
return (this.indexOf(o) !== -1);
}
);
小小提琴:http://jsfiddle.net/NE9kx/
也许这不是你想要的答案,但我想知道如果你有一个密钥,为什么不使用Object而不是Array:
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);
相关文章:
- 面向对象JavaScript中的私有函数
- 对象 Javascript 中的标签无效 - 想要添加事件列表器
- 将字符串转换为对象 javascript/jquery
- 正在检查对象javascript中是否存在嵌套属性
- 时间-日期对象JavaScript getUTCMilliseconds
- 仅在对象(javascript)中解析值
- 使用对象(JavaScript或jQuery)填充选择下拉列表
- 引用另一个对象javascript中的对象
- 如何删除列表中的对象?Javascript nodejs和下划线
- 无法从日期对象javascript获取日期和月份
- 如何在if语句中使用对象-Javascript
- 对象javascript错误
- 对象Javascript的少数实例
- 位置对象Javascript
- 将字符串传递到对象javascript中
- 获取对象Javascript或jQuery的最后一个值
- 鼠标接近对象Javascript
- 这个mixins代码是书中的错误吗;面向对象JavaScript的原理”;
- 使用闭包编译器编写更好的面向对象JavaScript完整示例代码
- 访问对象javascript数组中的对象属性值