我有一个对象:
{pm: 'val 1', dm: 'val 2', cm: 'val 3'}
我想遍历此过程,并检查另一个对象中是否存在任何键
如果将它们替换为另一个对象中匹配的键值。
{pm: 'price', dm: 'discount', cm: 'cost'}
预期输出为:
{price: 'val 1', discount: 'val 2', cost: 'val 3'
答案 0 :(得分:2)
您可以使用reduce
,检查另一个对象中是否存在键,然后将anotherObj
中的值添加为最终对象中的键
let obj = {pm: 'val 1', dm: 'val 2', cm: 'val 3', 'xy':'val 4'}
let anotherObj = {pm: 'price', dm: 'discount', cm: 'cost'}
let final = Object.entries(obj).reduce((op, [key,value]) => {
let newKey = anotherObj[key]
op[newKey || key ] = value
return op
},{})
console.log(final)
答案 1 :(得分:2)
这是最有效的方法。 检查以上所有答案here的执行情况。
var obj1 = {pm: 'val 1', dm: 'val 2', cm: 'val 3', mm: 'val 4'};
var obj2 = {pm: 'price', dm: 'discount', cm: 'cost'};
var output = {};
for(var key in obj1){
if(obj2[key]){
output[obj2[key]] = obj1[key];
} else {
output[key] = obj1[key];
}
};
console.log(output)
答案 2 :(得分:1)
将reduce
与Object.entries
一起使用:
const obj1 = {pm: 'val 1', dm: 'val 2', cm: 'val 3'};
const obj2 = {pm: 'price', dm: 'discount', cm: 'cost'};
const res = Object.entries(obj1).reduce((acc, [k, v]) => ({ ...acc, [obj2[k] || k]: v }), {});
console.log(res);
答案 3 :(得分:1)
您可以按照以下步骤进行操作:
blur = cv2.GaussianBlur(original, (5,5), 3)
result = cv2.bitwise_and(blur, blur, mask=otsu)
Object.entries()
。map()
获取一个对象。
Object.fromEntries()
答案 4 :(得分:1)
您可以使用Object.entries
将键对象转换为数组,并使用reduce
遍历数组
var val = {"pm":"val 1","dm":"val 2","cm":"val 3"};
var key = {"pm":"price","dm":"discount","cm":"cost"};
var result = Object.entries(key).reduce((c, [v, k]) => Object.assign(c, {[k]: val[v] || null}), {});
console.log(result)
答案 5 :(得分:1)
您可以使用Object.keys和Array.reduce这样的简洁方式来实现此目的:
let vals = {pm: 'val 1', dm: 'val 2', cm: 'val 3'}
let keys = {pm: 'price', dm: 'discount', cm: 'cost'}
let result = Object.keys(keys).reduce((r,k) => (r[keys[k]] = vals[k]) && r, {})
console.log(result)
答案 6 :(得分:1)
您可以使用obj [key]语法访问和定义键。参见下文,了解代码如何在obj2
之间循环,如果匹配,则使用obj2[key]
中的值作为键(res[obj2[key]]
)在res上创建新节点。我添加了一个额外的密钥mm
,以便您查看不匹配的密钥时发生的情况。
const obj1 = {pm: 'val 1', dm: 'val 2', cm: 'val 3', mm: 'val 4'};
const obj2 = {pm: 'price', dm: 'discount', cm: 'cost'};
const res = {};
for(let key in obj1){
if(obj2[key]){
res[obj2[key]] = obj1[key];
} else {
res[key] = obj1[key];
}
};
console.log(res);
希望这会有所帮助!
答案 7 :(得分:0)
您可以尝试使用代码
const obj1 = {pm: 'val 1', dm: 'val 2', cm: 'val 3'},
obj2 = {pm: 'price', dm: 'discount', cm: 'cost'},
obj = {};
Object.keys(obj2).forEach( key2 => {
Object.keys(obj1).forEach( key1 => {
if (key2 === key1) {
obj[obj2[key2]] = obj1[key1]
}
});
});
console.log(obj)
答案 8 :(得分:0)
一种非常简单的方法:
let obj = {pm: 'val 1', dm: 'val 2', cm: 'val 3'};
let otherObj = { dm: 'val 9'}
for(let key in obj){
if(otherObj[key] != null) {
obj[key] = otherObj[key]
}
}