基于一个属性Javascript检索多个对象
Retrieving multiple objects based on one attribute Javascript
我对JSON很陌生,所以我甚至不确定是否有可能完成我想要做的事情。
是否可以基于一个属性获取多个对象?如果这听起来令人困惑,很抱歉。基本上,当在下面的代码中搜索"red"时,我希望它返回所有带有"red"的对象。此时,它只返回一个。
var colors = {
"black": {"url": "asdf","tags": "tie"},
"red": {"url": "qwer","tags": "shirt"},
"red": {"url": "lkj","tags": "blazer"},
"grey": {"url": "mnvb","tags": "pants"}
}
document.getElementById('output').innerHTML = (JSON.stringify(colors["red"]));
这里有一个链接,可以查看它在当前状态下的工作方式:http://jsfiddle.net/8aqweLhv/
有可能做到这一点吗?如果有,如何做到?
如果要将多个值与一个键关联,则需要一个嵌套结构。数组会起作用。
var colors = {
"black": {"url": "asdf","tags": "tie"},
"red": [
{"url": "qwer","tags": "shirt"},
{"url": "lkj","tags": "blazer"}
],
"grey": {"url": "mnvb","tags": "pants"}
};
现在colors.red
将为您提供Array,您可以像正常情况一样对其进行迭代。
colors.red.forEach(function(obj) {
console.log(obj.url, obj,tags);
});
(顺便说一句,这不是JSON。它只是JavaScript的对象初始化器语法,看起来与JSON数据交换格式惊人地相似)
考虑到目的是搜索属性,而不是唯一密钥,我认为OP正在寻找的是:
var clothing_pieces = {
tie: { color: "red", url: "..." },
pants: { color: "black", url: "..." },
shoes: { color: "red", url: "..." }
};
function getByColor(pieces, color) {
var matchingPieces = [];
for (p in pieces) {
if ( pieces[p].color == color ) { matchingPieces.push(p); }
}
return matchingPieces
}
var myPieces = getByColor(clothing_pieces, "red");
JavaScript内置字典类型的功能不足以使用内置运算符[]执行所需的搜索。getByColor
也可以被推广,并作为练习。
相关文章:
- 如何使用Javascript客户端对象模型检索Sharepoint 2010列表项权限
- 更改json/javascript对象var名称或从数字var中检索值
- 如何从类关系中检索对象列表
- 无法使用ng repeat检索动态创建的JSON对象的属性
- 如何在Windows8Metrojavascript中将窗体的值检索到对象中
- 正在从JSON对象检索数据
- 只有当Angular从资源对象检索数据时,才选择选项元素
- 从 XML 对象检索数据
- 对从字典 JavaScript 对象检索的对象调用方法
- 如何从多个 JSON 响应对象检索数据
- Ajax调用工作正常,但php文件在从对象检索属性时出错
- 通过JSON数组对象检索多个值
- 从解析对象检索信息时,解析JavaScript返回[object,object]
- JQuery text();从解析对象检索信息时返回[object object]
- 使用wcf-Restful Service将json对象检索为querystring
- javascript通过使用正则表达式匹配键从JSON对象检索值
- 将现有对象检索到变量中
- 解码json对象检索从PHP在Javascript
- 使用子字符串从JSON对象检索数据
- 使用传单从json文件加载圆坐标/使用从圆对象检索的数据