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