我可以简化这个Javascript循环吗?

我可以简化这个Javascript循环吗?,javascript,angularjs,Javascript,Angularjs,我可能已经用了最复杂的方法来实现这一点(见下面的代码)。有经验的人能告诉我有没有更好的办法吗 我有两个JSON对象resource和data。我想循环查看数据中的每个新项,如果资源中的键匹配,则用数据中的值替换该键资源的值。如果这没有意义,我下面的代码将 这是有效的,并且做了我需要它做的事情,但是它感觉不对(不要笑) factory.put=函数(资源、数据){ dataArr=[数据]; resourceArr=[resource]; 对于(变量i=0;i然后发布你为什么要将数据和资源放入数组

我可能已经用了最复杂的方法来实现这一点(见下面的代码)。有经验的人能告诉我有没有更好的办法吗

我有两个JSON对象
resource
data
。我想循环查看
数据中的每个新项,如果
资源中的键匹配,则用数据中的值替换该键资源的值。如果这没有意义,我下面的代码将


这是有效的,并且做了我需要它做的事情,但是它感觉不对(不要笑)

factory.put=函数(资源、数据){
dataArr=[数据];
resourceArr=[resource];
对于(变量i=0;i
您不需要迭代resourceArr的键。只需检查resourceArr[key]是否存在,如果存在,请设置该值

比如:

if(resourceArr[key])
 resourceArr[key] = attrValue;

您不需要迭代resourceArr的键。只需检查resourceArr[key]是否存在,如果存在,请设置该值

比如:

if(resourceArr[key])
 resourceArr[key] = attrValue;

除非我遗漏了什么,否则您不需要将对象填充到数组中。您只需循环遍历一个对象的属性
data
,检查该属性是否存在于另一个对象
resource
中,如果存在,则将
resource
中的值替换为
data
中的值

for (var key in data) {
    var attrName = key;
    var attrValue = data[key];

    if(resource[attrName]) {
        resource[attrName] = attrValue;
    }
}

除非我遗漏了什么,否则您不需要将对象填充到数组中。您只需循环遍历一个对象的属性
data
,检查该属性是否存在于另一个对象
resource
中,如果存在,则将
resource
中的值替换为
data
中的值

for (var key in data) {
    var attrName = key;
    var attrValue = data[key];

    if(resource[attrName]) {
        resource[attrName] = attrValue;
    }
}

简化循环的一种方法是使用函数,该函数提供:

factory.put = function (resource, data) {
    dataArr = [data];
    resourceArr = [resource];

    angular.forEach(dataArr, function(obj) {
        angular.forEach(obj, function(value, key) {
            angular.forEach(resourceArr, function(resourceObj) {
                if(resourceObj[key]) {
                    resourceObj[key] = value;
                }
            }
        }
    }

    resource.put()
}

简化循环的一种方法是使用函数,该函数提供:

factory.put = function (resource, data) {
    dataArr = [data];
    resourceArr = [resource];

    angular.forEach(dataArr, function(obj) {
        angular.forEach(obj, function(value, key) {
            angular.forEach(resourceArr, function(resourceObj) {
                if(resourceObj[key]) {
                    resourceObj[key] = value;
                }
            }
        }
    }

    resource.put()
}

“这是有效的,并且完成了我需要做的”>然后发布为什么要将
数据
资源
放入数组?@creditenson如果它们是数组,我只能让我的循环进行迭代。我确实尝试了dataArr[0][I],但没有成功。@Stéphane Bruckert是否比codereview更适合此类问题?上面的代码确实有很多问题。@Spike我不知道当你只有两个对象,
data
resource
时,为什么你会觉得需要在一个对象数组中循环。查看我的答案,让我知道这是否起作用,我误解了你的意图。“这起作用,并且做了我需要做的”>然后发布你为什么要将
数据
资源
放入数组?@creditenson如果它们是数组,我只能让我的循环进行迭代。我确实尝试了dataArr[0][I],但没有成功。@Stéphane Bruckert是否比codereview更适合此类问题?上面的代码确实有很多问题。@Spike我不知道当你只有两个对象,
data
resource
时,为什么你会觉得需要在一个对象数组中循环。看看我的答案,让我知道如果这不起作用,我误解了你想做什么。