javascript - 在Javascript中遍历JSON对象时动态插入值

标签 javascript arrays json loops

对于我的技能水平来说,我走得太远了。

这是我正在获取的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_ratingfield_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/

相关文章:

ruby-on-rails - 在 Rails + Postgres 中仅附加 jsonb 列

java - 将行的特定部分添加到数组

c - 在C函数中修改2D malloc数组

C++ 通过引用传递单个元素数组 - 这是事实吗?

javascript - 在窗口中重新调整 Google 图表的大小

php - 在Windows 7命令行窗口中通过PHP套接字发送JSON数据

c# - 使用 JSON.net 解析 json 字符串

javascript - 获取网址的最后一部分

@section 中的 Javascript for 循环导致解析器错误

java - 用于与 JSP/Java 集成的文件浏览器的原型(prototype)/Scriptaculous Javascript 插件?