对于我的技能水平来说,我走得太远了。
这是我正在获取的JSON数据(下降了几层。)
field_user_skill: {
und: {
0: {
field_skill: {
und: "JavaScript"
},
field_user_skill_current_rating: {
und: [{
value: "5"
}]
},
field_user_skill_desired_rating: {
und: [{
value: "9"
}]
},
remove_button: "Remove",
_weight: 0
},
1: {
field_skill: {
und: "Ruby"
},
field_user_skill_current_rating: {
und: [{
value: "6"
}]
},
field_user_skill_desired_rating: {
und: [{
value: "10"
}]
},
remove_button: "Remove",
_weight: 1
},
}
我试图把我的头围绕如何使用特定值(从数组)例如。
var index = [0,1,2,3]
遍历对象并在每次通过时替换ID,并希望创建一个NEW数组,在这里我可以比较field_user_skill_current_rating
和field_user_skill_desired_rating
的值。例如,在第一个遍历中,使用
field_user_skill.und.0
的第一个索引,然后在下一个遍历中使用field_user_skill.und.1
,依此类推,以此类推,对于每个连续的遍历,依此类推,因此我可以基于每个遍历的结果创建新数组一。我尝试了所有突然出现的(疯狂的)想法,但现在我陷入了困境。
我只是不太确定在使用Javascript进行迭代时如何替换值。实际上,那有可能吗?很抱歉格式化。提前致谢!
最佳答案
该代码假定您的JSON不会偏离上述结构,因此您应确保是这种情况,否则,在尝试访问属性或数组值之前,您需要添加适当的存在检查。您可能可以在一个循环中完成所有这些操作,但是转换数据可以使以后的处理更加简单。
另外,我不清楚您打算如何处理这些数据,因此我添加了一个示例。希望这可以为您提供一个良好的起点,帮助您完成自己的工作。
Live Demo
JS
var field_user_skill = {
und: {
0: {
field_skill: {
und: "JavaScript"
},
field_user_skill_current_rating: {
und: [{
value: "5"
}]
},
field_user_skill_desired_rating: {
und: [{
value: "9"
}]
},
remove_button: "Remove",
_weight: 0
},
1: {
field_skill: {
und: "Ruby"
},
field_user_skill_current_rating: {
und: [{
value: "11"
}]
},
field_user_skill_desired_rating: {
und: [{
value: "10"
}]
},
remove_button: "Remove",
_weight: 1
},
}
};
function processSkills(userSkills){
var data = [],
skillNum = null;
for(skillNum in userSkills.und){
data.push({
'skill': userSkills.und[skillNum].field_skill.und,
'currentRating': parseInt(userSkills.und[skillNum].field_user_skill_current_rating.und[0].value,10),
'desiredRating': parseInt(userSkills.und[skillNum].field_user_skill_desired_rating.und[0].value,10),
});
}
return data;
}
function doYourComparison(data){
var i = 0,
count = data.length;
for(; i < count; i++){
if(data[i].currentRating < data[i].desiredRating){
alert('needs improvement');
}else{
alert('doint great');
}
}
}
var data = processSkills(field_user_skill);
doYourComparison(data);
结果
[
{
"skill": "JavaScript",
"currentRating": 5,
"desiredRating": 9
},
{
"skill": "Ruby",
"currentRating": 11,
"desiredRating": 10
}
]
关于javascript - 在Javascript中遍历JSON对象时动态插入值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21942543/