我有一个对象:
{pm: 'val 1', dm: 'val 2', cm: 'val 3'}
我想循环遍历这个对象,并检查另一个对象中是否存在任何键,
如果存在,则用其他对象中与匹配的键相对应的值替换键。
{pm: 'price', dm: 'discount', cm: 'cost'}
期望输出为:
{price: 'val 1', discount: 'val 2', cost: 'val 3'}
我有一个对象:
{pm: 'val 1', dm: 'val 2', cm: 'val 3'}
我想循环遍历这个对象,并检查另一个对象中是否存在任何键,
如果存在,则用其他对象中与匹配的键相对应的值替换键。
{pm: 'price', dm: 'discount', cm: 'cost'}
期望输出为:
{price: 'val 1', discount: 'val 2', cost: 'val 3'}
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)
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)
Object.entries
和reduce
:
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);
Object.entries()
获取第一个对象的条目。map()
。Object.fromEntries()
获取一个对象。const obj1 = {pm: 'val 1', dm: 'val 2', cm: 'val 3'}
const obj2 = {pm: 'price', dm: 'discount', cm: 'cost'}
const res = Object.fromEntries(
Object.entries(obj1)
.map(([k,v]) => [(obj2[k] || k), v])
)
console.log(res)
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)
您可以使用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)
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);
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)
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]
}
}