我有一个返回的对象列表:data.d [15]
及其中的一个样本:
data.d[3] = {
CityId: 2,
CityName: "Ankara"}
我想将其转换为一个对象
cities{
1: "Istanbul",
2: "Ankara",
3: "New York"
}
它应该是通用的,所以我不知道“CityId”和“CityName”字段名称。 什么是最好的方法?
谢谢大家...我已经按字段对象发送字段名 - 没有对此代码很重要的依赖项 - 它已经解决了。
var url = this.options.url + "/" + field.values,
id = field.fieldId,
title = field.fieldTitle;
this.getJSON(url, {}, function (rData) {
var obj = {};
for (i = 0; i < rData.d.length; i++)
obj[rData.d[i][id]] = rData.d[i][title];
$("#" + parentId).html(self.getHtmlOfFormData(type, obj));
});
答案 0 :(得分:2)
也许您需要检测哪个属性包含城市名称。也许这样的事情可以奏效吗?
var idprop, nameprop;
for (var prop in data.d[0]) {
if (typeof data.d[0][prop] === "string") nameprop = prop;
if (typeof data.d[0][prop] === "number") idprop = prop;
}
var cities = {};
for (var i = 0; i < data.d.length; i++)
cities[data.d[i][idprop]] = data.d[i][nameprop];
请记住,如果符合以下条件,则可以这样做:
data.d
不是空数组; 答案 1 :(得分:1)
如果我理解你的问题,你试图转换一些看起来像这样的ajax:
data.d = [
{
cityId: someNumber1,
cityName: someName1
},
{
cityId: someNumber2,
cityName: someName2
}
];
进入一个看起来像这样的对象:
cities = {
someNumber1: someName1,
someNumber2: someName2
};
像这样的片段可以解决这个问题:
var cities = {};
for (var i = 0; i < data.d.length; i++) {
cities[data.d[i].cityId] = data.d[i].cityName;
}