Javascript 如何替换JSON对象kyes
我有两个阵列:Javascript 如何替换JSON对象kyes,javascript,arrays,angular,object,lodash,Javascript,Arrays,Angular,Object,Lodash,我有两个阵列: [{ key: 'first_name', value: 'FirstName' }, { key: 'middle_name', value: 'MiddleName' }, { key: 'age', value: 'Age' }] 以及: 在angular中,我想比较两个数组并用第二个对象键替换第一个对象键 我尝试了下面的代码,但它不工作 var updatedBooks = JSON.parse(parsed, function (key, va
[{
key: 'first_name',
value: 'FirstName'
}, {
key: 'middle_name',
value: 'MiddleName'
}, {
key: 'age',
value: 'Age'
}]
以及:
在angular中,我想比较两个数组并用第二个对象键替换第一个对象键
我尝试了下面的代码,但它不工作
var updatedBooks = JSON.parse(parsed, function (key, value) {
// if key is `Number`, change it to ISBN
let data = _.find(arr, function (o) { return o.value==key });
//console.log("data",data);
if (key === data.value) {
data.key = value;
} else {
return value;
}
});
预期产出:
[{
first_name: "Mayuresh",
middle_name: "Dinkar ",
LastName: "Joshi",
age: 24
}, {
first_name: "Arun",
middle_name: "Vikas",
LastName: "Pathak",
age: 25
}, {
first_name: "Narendra",
middle_name: "Damodardas",
LastName: "Modi",
age: 50
}]
将映射与查找和对象一起使用。条目:
const arr=[{key:'first_name',value:'FirstName'},{key:'middle_name',value:'MiddleName'},{key:'age',value:'age'}];
const data=[{名字:Mayuresh,中间名:Dinkar,姓氏:Joshi,年龄:4},{名字:Arun,中间名:Vikas,姓氏:Pathak,年龄:25},{名字:Narendra,中间名:Damodardas,姓氏:Modi,年龄:50}];
const res=data.mapelem=>{
设temp={};
Object.entrieselem.forEach[k,v]=>{
让newKey=arr.find{value}=>value==k;
如果newKey temp[newKey.key]=v;
否则温度[k]=v;
};
返回温度;
};
console.logres;
.as控制台包装{max height:100%!important;top:auto;}JSON.parse的回调只对值起作用。因此,在您的情况下,要使用的值是对象,而不是对象键值对:
const result = JSON.parse(data, (key, value) => {
if(typeof value !== "object" || value === null || Array.isArray(value))
return value;
const result = {};
for(const [key, value] of Object.entries(value)) {
const replaceKey = (keys.find(it => it.value === key) || {}).key;
result[replaceKey || key] = value;
}
return result;
});
从键数组创建值->键的映射。然后映射数据,并使用u.mapValues替换对象的键: const keys=[{key:first\u name,value:FirstName},{key:middle\u name,value:MiddleName},{key:age,value:age}] const data=[{名字:Mayuresh,中间名:Dinkar,姓氏:Joshi,年龄:4},{名字:Arun,中间名:Vikas,姓氏:Pathak,年龄:25},{名字:Narendra,中间名:Damodardas,姓氏:Modi,年龄:50}] const keysMap=new Mapkeys.mapo=>[o.value,o.key] const result=data.mapo=> console.logresult 让我们取一个数组,将第一个数组值作为键,将键作为值
var arr1Obj = {};
arr1.forEach(e => arr1Obj[e.value] = e.key);
现在我们在上面创建的对象看起来有点像
现在是迭代第二个数组的时候了
arr2.forEach(elem => {
var obj = {};
// here elem is an object having properties,
// iterate over it as well for changing the prop nam
Object.keys(elem).forEach(key => {
var propKey = arr1Obj[key];
if(propKey) {
obj[propKey] = elem[key];
} else {
obj[key] = elem[key];
}
});
result.push(obj);
})
console.log(result)
输出应该是什么?它不工作-这意味着什么?它是否为您的期望提供了不同的数据?它是否会在错误消息中抛出错误引号?还有别的吗?提供一个包含输入数据和输出日志的示例,输出如下[{名字:Mayuresh,中间名字:Dinkar,姓氏:Joshi,年龄:24},{名字:Arun,中间名字:Vikas,姓氏:Pathak,年龄:25},{名字:Narendra,中间名字:Damodardas,姓氏:Modi,年龄:50}]
var arr1Obj = {};
arr1.forEach(e => arr1Obj[e.value] = e.key);
var result = [];
arr2.forEach(elem => {
var obj = {};
// here elem is an object having properties,
// iterate over it as well for changing the prop nam
Object.keys(elem).forEach(key => {
var propKey = arr1Obj[key];
if(propKey) {
obj[propKey] = elem[key];
} else {
obj[key] = elem[key];
}
});
result.push(obj);
})
console.log(result)