我试图通过比较两个对象的值来更改对象的键名。如果第二个对象的值与第一个对象匹配,则我想获取第二个对象的键名并将第一个对象的键名更改为相同。
这是我的代码,但是无法将键名SQL> with
2 test (client_no, datum, type) as
3 -- sample data
4 (select 'client 1', date '2014-09-22', '001' from dual union all
5 select 'client 1', date '2014-09-19', '002' from dual union all
6 select 'client 1', date '2014-09-10', '005' from dual union all
7 select 'client 2', date '2014-09-15', '012' from dual union all
8 select 'client 2', date '2014-09-20', '011' from dual
9 ),
10 -- sort them
11 sorted as
12 (select client_no, datum, type,
13 row_number() over (partition by client_no order by datum desc) rn
14 from test
15 )
16 -- select the one with RN = 1
17 select client_no, datum, type
18 from sorted
19 where rn = 1;
CLIENT_NO DATUM TYPE
---------- ---------- ----
client 1 22/09/2014 001
client 2 20/09/2014 011
SQL>
替换为 #My jango website
location = /django/ {
rewrite /django/(.*) /$1 break;
proxy_pass http://localhost:8000;
proxy_redirect on;
proxy_set_header Host $host;
}
parsedCodedParms
示例:
mappingParms
应该结果
for (var [key, value] of Object.entries(parsedCodedParams)) {
for (var [k, v] of Object.entries(this.mappingParams)) {
if (v.toLowerCase() == key) {
parsedCodedParams[key] = this.mappingParams[k];
console.log(parsedCodedParams[key])
}
}
}
答案 0 :(得分:1)
您要更改的是值,而不是键。无法直接替换密钥,必须添加新密钥并删除旧密钥。
此外,您正在将值与键进行比较,而不是将值进行比较。
let parsedCodedParams = {a: "1", b:"2", c: "3"};
let mappingParams= { d:"1", z:"5"};
for (var [key, value] of Object.entries(parsedCodedParams)) {
for (var [k, v] of Object.entries(mappingParams)) {
if (v.toLowerCase() == value) {
parsedCodedParams[k] = v;
delete parsedCodedParams[key];
}
}
}
console.log(parsedCodedParams)
答案 1 :(得分:0)
使用减少。生成值映射,将值合并为键,丢弃键并将其转换回映射。添加了保留键顺序的版本。
parsedCodedParams = {a: "a",b:"2", c: "3"}
mappingParams={ d:"A",z:"5"}
// does not preserve order of parsedCodedParams
console.log(
Object.fromEntries(Object.values( // discard value as keys and convert back to map
Object.entries(mappingParams).reduce( // merge value as keys from mappingParams
(acc,x,k) => (acc[k=x[1].toLowerCase()] && (acc[k]=x), acc),
// create map of value as keys on parsedCodedParams
Object.entries(parsedCodedParams).reduce((acc,x)=>(acc[x[1].toLowerCase()]=x,acc), {})
)
))
);
// preserves order of parsedCodedParams
console.log(
Object.fromEntries(Object.values( // discard index i as key and convert back to map
Object.fromEntries(Object.values( // discard value as keys and convert to map with key as index i
Object.entries(mappingParams).reduce( // merge value as keys from mappingParams (preserving index i)
(acc,x,i,k) => (acc[k=x[1].toLowerCase()] && (acc[k][1]=x), acc),
// create map of value as keys on parsedCodedParams
Object.entries(parsedCodedParams).reduce((acc,x,i)=>(acc[x[1].toLowerCase()]=[i,x],acc), {})
)
))
))
);