我正在处理一个将对象(记录)传递给函数的函数。然后它遍历键并检查该键是否在我们的第二个对象(查找)中。如果匹配,它会将操作版本替换为记录中的值(将其转换为链接)。如果没有匹配,则保持其原始值。
这是我传递给函数的内容:
{ Source: "1234", NTID: "joeBob", Department: "x123", Email: 'joebob@example.com' }
- 这是功能
function createLink2(record) {
// Link types
var output = {
'ntid': 'https://example.com/profile/',
'email': 'mailTo:'
};
// Vars
var i,
key,
keys = Object.keys(output);
// Loop over our object keys
Object.keys(record).forEach(function(k, ind) {
// Loop over each of the link types
for ( i = 0; i < keys.length; ++i ) {
key = keys[i];
// If our key matches that of our object, turn it into a link
if(k.toLowerCase() == key){
record = '<a href="'+ output[key] + record[k] + '" target="_blank">'+record[k]+'</a>';
}else{
// Return the original value of the property since its not a match. Not quite sure how to do this part.
}
}
});
return record;
}
我的目标是用<a href="mailto: joeBob@example.com">joeBob@example.com</a>
取代电子邮件的价值,用<a href="https://example.com/profile/joeBob">joeBob</a>
替换NTID。
我遇到的问题是返回 - 不太确定如何编辑数据并返回完整的对象。
答案 0 :(得分:1)
更改此行:
record = '<a href="'+ output[key] + record[k] + '" target="_blank">'+record[k]+'</a>';
到此:
record[k] = '<a href="'+ output[key] + record[k] + '" target="_blank">'+record[k]+'</a>';
当然,您可以通过直接引用对象的属性来更轻松地完成此操作:
function createLink2(record) {
// Link types
var output = {
'NTID': 'https://example.com/profile/',
'Email': 'mailTo:'
};
// Loop over the output keys
Object.keys(output).forEach(function(k, ind) {
if(record.hasOwnProperty(k)) {
record[k] = '<a href="' + output[k] + record[k] + '">' + record[k] + '</a>';
}
});
return record;
}
请注意,您并非真的需要返回它,因为对象的内容将直接更改,如评论中其他人所述。
答案 1 :(得分:0)
Javascript对象通过引用传递。因此,如果您修改函数中的对象就足够了。例如:
function test(obj) {
obj.a = 10
}
var x = {a: 2};
test(x);
console.log(x.a) //prints 10
所以,你所要做的就是修改&#34; Email&#34;无论你想要什么。
答案 2 :(得分:0)
您可以使用lapply(my_list, function(x) filter(x, grepl("blank", ROI)))
# [[1]]
# # A tibble: 1 × 3
# ROI Red Green
# <chr> <dbl> <dbl>
# 1 blank 1.9 1.1
# [[2]]
# # A tibble: 2 × 3
# ROI Red Green
# <chr> <dbl> <dbl>
# 1 blank1 0.5 2
# 2 blank2 0.7 7
.reduce()
&#13;