js/es6 两个数组过滤字段并对应上值

原数据格式↓

const formInit = {
  id: '',
  name: '',
  type: ''
}

const data = {
  id: '123',
  name: '你好',
  type: '1',
  updateTime: '2021-6-9',
  updateBy: 'admin'
}

期待结果↓

const result = {
  id: '123',
  name: '你好',
  type: '1'
}

就是我需要的是formInit的字段和相对应data的字段及value,像updateTime和updateBy这种formInit里面没有的字段就不要。
求大神们给个简便的方法

感谢各位大哥大姐的解答,小弟感激不尽!

阅读 2.2k
3 个回答
const build = (init, data) => {
  let keys = Object.keys(init);
  return Object.fromEntries(
    Object.entries(data).filter(([key]) => keys.includes(key))
  );
};

用结构赋值就行了
{id,type,name}=data
formInit={id,type,name}
就行了

var formInit = {
        id: '',
        name: '',
        type: ''
    };

    var data = {
        id: '123',
        name: '你好',
        type: '1',
        updateTime: '2021-6-9',
        updateBy: 'admin'
    };
    Object.keys(formInit).forEach((key) => formInit[key] = data[key]);
    console.log(JSON.stringify(formInit));
//{"id":"123","name":"你好","type":"1"}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题