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)