如何获得数组对象的键
How to get the key of an array object?
给定对表单的JSON响应,我需要解析JSON元素以查找与错误相关的元素的错误消息。
数据以JSON格式返回,错误消息作为最后一个变量对,如下所示:
"invalid":[{"field1":"Field 1 is required"}]
结果是每个错误都有一个对象/数组,显示项目的名称(键)以及该字段的相关错误。假设我的错误处理表单不知道键名是什么,我如何从这个对象/数组中获得键和值?
我在这个项目上使用dojo,我根本不熟悉它,所以我一直在尝试使用dojo函数,如果可能的话,如果存在可以处理这个。当前有我在哪里:
var retObj = dojo.fromJson(ioargs.xhr.responseText);
dojo.forEach(retObj.invalid, function(entry,i){
console.debug(entry);
});
控制台输出为:
Object { field1="Field 1 is required"}
我的目标是取出值"field1",这样我就知道这个错误被分配给哪个输入字段,然后将field1的值分配给那个错误字段。
谢谢!
对Dojo一无所知,但您正在寻找一个非常基本的for in
循环。
var retObj = dojo.fromJson(ioargs.xhr.responseText),
invalids = retObj.invalid[0],
res = {}; //here will be your final key=>value
for (var key in invalids) {
res[key] = invalids[key];
}
http://jsfiddle.net/DgXkq/您可能还会对https://stackoverflow.com/search?q=%5Bjavascript%5Dparsing+json
如果不能访问父对象,则无法找到对象的键。我认为在这种情况下,最好的解决方案是对JSON进行按摩,以便将更有意义的信息传递给验证器,也就是说,一个具有两个属性(fieldName和errorMessage)的对象。
// Returns the name of an object's first key
function getKeyName(obj) {
for (var prop in obj) {
return prop;
}
}
// This is the response from the server
var response = { "invalid":[{"field1":"Field 1 is required"}] };
// This is going to be the massaged array that
// contains more meaningful information.
var invalids = [];
for (var i=0; i < response.invalid.length; i++) {
var obj = response.invalid[i];
var key = getKeyName(obj);
invalids.push({fieldName: key, errorMessage: obj[key]})
}
现在invalids
包含一个更有意义的错误消息对象数组,如invalids = [{fieldName: 'field1', errorMessage: 'Field 1 is required'}]
只需将该对象传递给验证例程。如果可能的话,我会更改服务器代码,以我建议的格式返回错误消息,这样您就不必做额外的工作了。
相关文章:
- Javascript(Angular)从一个对象数组到第二个数组查找值
- 在Javascript中转换对象数组
- 在JavaScript中通过索引从对象数组中获取值
- Backbone虹吸以获取对象数组
- 如何在DataTables 2.1中迭代对象数组
- Javascript-根据赋值顺序,按键合并对象数组
- 将事件附加到对象/数组
- jQuery$.inArray()总是返回-1和一个对象数组
- javascript处理一个对象数组以获得一个新的对象数组
- javascript在数组中获取对象数组中键的所有不同值
- 在对象数组中查找多个值的d3范围
- Undercore.js获取对象数组中键对象的值
- 在mongoose中使用正则表达式在对象数组中进行查询搜索
- 如何通过json对象数组为嵌套对象赋值
- 如何循环通过2个对象数组并通过匹配id进行合并
- 为对象数组创建列表项
- 如何使用javascript合并两个对象数组
- JSON到对象数组,并向每个对象添加项
- JavaScript:从对象数组中获取唯一值及其计数
- 按不同项目对对象数组进行排序