是否可以将对象的属性访问到像矩阵这样的对象数组中?
我的意思是这样的:
jSon生成的对象:
[
{
"Nome": "1",
"Departamento": "1",
"Cargo": "1"
},
{
"Nome": "5",
"Departamento": "5",
"Cargo": "5"
},
{
"Nome": "2",
"Departamento": "2",
"Cargo": "2"
},
{
"Nome": "3",
"Departamento": "33",
"Cargo": "33"
},
{
"Nome": "4",
"Departamento": "4",
"Cargo": "4"
}
]
我如何尝试访问对象属性:
object[0][1] = value;
我已做的事情:
object[0]["Nome"] = value;
我搜索了很多,但我找不到解决这个问题的方法。
答案 0 :(得分:2)
没有
对象和数组是JavaScript中两种非常不同的类型。在数组中,顺序非常重要,但对象键不保留顺序。请记住,您仍然可以迭代对象的键。
for (var prop in myObj) {
console.log("myObj.prop -> ", myObj[prop]);
}
答案 1 :(得分:2)
如前所述,Array
和Object
不同。我并没有真正按照你的推理从一个结构转换到另一个结构,你应该考虑以不同的方式工作,这完全可以从你的问题和评论描述。但是,如果你真的必须转换,那么你需要执行某种映射,来确保事情的正确排序。你可以这样做。
的Javascript
function toMapped (array) {
var mapping = {
"Nome": 0,
"Departamento": 1,
"Cargo": 2
},
mapped = [],
length = array.length,
i = 0,
element,
j;
while (i < length ) {
element = [];
for (j in mapping) {
if (mapping.hasOwnProperty(j) && array[i].hasOwnProperty(j)) {
element[mapping[j]] = array[i][j];
}
}
mapped.push(element);
i += 1;
}
return mapped;
}
function fromMapped (array) {
var mapping = {
0: "Nome",
1: "Departamento",
2: "Cargo"
},
mapped = [],
length = array.length,
i = 0,
object,
j;
while (i < length ) {
object = {};
for (j in mapping) {
if (mapping.hasOwnProperty(j) && array[i].hasOwnProperty(j)) {
object[mapping[j]] = array[i][j];
}
}
mapped.push(object);
i += 1;
}
return mapped;
}
var test = [{
"Nome": "1",
"Departamento": "1",
"Cargo": "1"
}, {
"Nome": "5",
"Departamento": "5",
"Cargo": "5"
}, {
"Nome": "2",
"Departamento": "2",
"Cargo": "2"
}, {
"Nome": "3",
"Departamento": "33",
"Cargo": "33"
}, {
"Nome": "4",
"Departamento": "4",
"Cargo": "4"
}];
var mapped = toMapped(test);
var unmapped = fromMapped(mapped);
console.log(test);
console.log(mapped);
console.log(unmapped);
上
使用ECMA5 Array.prototype.map
的Javascript
function toMapped(array) {
var mapping = {
"Nome": 0,
"Departamento": 1,
"Cargo": 2
};
return array.map(function (object) {
var element = [],
i;
for (i in mapping) {
if (mapping.hasOwnProperty(i) && object.hasOwnProperty(i)) {
element[mapping[i]] = object[i];
}
}
return element;
});
}
function fromMapped(array) {
var mapping = {
0: "Nome",
1: "Departamento",
2: "Cargo"
};
return array.map(function (element) {
var object = {},
i;
for (i in mapping) {
if (mapping.hasOwnProperty(i) && element.hasOwnProperty(i)) {
object[mapping[i]] = element[i];
}
}
return object;
});
}
var test = [{
"Nome": "1",
"Departamento": "1",
"Cargo": "1"
}, {
"Nome": "5",
"Departamento": "5",
"Cargo": "5"
}, {
"Nome": "2",
"Departamento": "2",
"Cargo": "2"
}, {
"Nome": "3",
"Departamento": "33",
"Cargo": "33"
}, {
"Nome": "4",
"Departamento": "4",
"Cargo": "4"
}];
var mapped = toMapped(test);
var unmapped = fromMapped(mapped);
console.log(test);
console.log(mapped);
console.log(unmapped);
上