我有什么,
var oldUsers = [{
"SID": "S-12",
"Username": "bring.on",
"firstname": "bring",
"lastname": "on",
"email": "emasdklhsjas@gmnailasd.com"
// and so on... 10 more properties
}, {
"SID": "S-13",
"Username": "bring.on1",
"firstname": "bring",
"lastname": "on1",
"email": "sdf@gmnailasd.com"
// and so on... 10 more properties
},
// n numbers of more users...];
我想要的,
var newUsers = [{ FullName : "bring on - emasdklhsjas@gmnailasd.com",
value : S-12
},
{ FullName : "bring on1 - sdf@gmnailasd.com",
value : S-13
}, // more users with same properties as abvove
];
我尝试但失败了,
var newUsers = $.each(oldUser, function () {
return u = {
value : this.SID,
FullName : this.firstname + " " + this.lastname + " - " + this.email,
};
});
它需要在IE-8上工作+不确定我做错了什么。
我想要的只是减少数组中对象的属性并获得一个新对象。
答案 0 :(得分:3)
Array.prototype.map()
可用于使用Plain old Vanilla JavaScript创建新数组。
map()方法创建一个新数组,其结果是在此数组中的每个元素上调用提供的函数
var newUsers = oldUser.map(function(obj){
return {
value : obj.SID,
FullName : obj.firstname + " " + obj.lastname + " - " + obj.email,
}
});
注意:它适用于IE9 +
var newUsers = jQuery.map(oldUser, function(obj){
return {
value : obj.SID,
FullName : obj.firstname + " " + obj.lastname + " - " + obj.email,
}
});
答案 1 :(得分:3)
您的问题是.each
函数没有返回任何内容。
http://api.jquery.com/jquery.each/。它迭代对象集合并对每个对象执行和操作。这与高阶函数映射的功能概念不同,后者用于将一个集合转换为另一个集合。 (JQuery有一个地图函数too。)
要解决您的问题,您需要执行以下操作:
var newArray = []
var newUsers = $.each(oldUser, function () {
newArray.push ({
value : this.SID,
FullName : this.firstname + " " + this.lastname + " - " + this.email,
});
});
or
var newArray = $.map(oldUsers, function (u,i) {
return {
value : this.SID,
FullName : u.firstname + " " + u.lastname + " - " + u.email,
};
});
就个人而言,我会选择第二个,因为它会减少代码中side effects的数量。
编辑:显然,地图在IE 8中不起作用,所以最重要的是更正确的方法。
答案 2 :(得分:2)
尝试以下方法:
var newUsers = [];
$.each(oldUser, function () {
newUsers.push({
value : this.SID,
FullName : this.firstname + " " + this.lastname + " - " + this.email,
});
});
Here is a fiddle for it。运行小提琴时,请检查控制台日志中的结果。
答案 3 :(得分:0)
试试这个!
.control-label {
text-align:left!important;
}
答案 4 :(得分:0)
您的对象是一个对象数组,因此请使用数组映射方法:
var result = oldUsers.map(function(e){
return { Fullname : e.firstname + e.lastname, value : e['SID']};
});