javascript - 使用 Typescript 从数组 json 中删除未在另一个数组中列出的对象(项目)

标签 javascript typescript

我想从 JSON 数组中删除那些未在另一个数组中列出的对象。

let originalArray = [{
  id: 1,
  NoOfEmp: 12,
  Wages:1000,
  TotalSI: 21,
  Salary:3000
}, {
   id: 2,
  NoOfEmp: 13,
  Wages:2000,
  TotalSI: 22,
  Salary:4000
}]

let keepArrayObjects = ['id','NoOfEmp','Wages']


originalArray = originalArray.filter( function( el ) {
  return keepArrayObjects.indexOf( el ) >  0;
} );

console.log(originalArray); 

我已尝试使用上面的代码来删除对象“TotalSI”、“Salary”并保留 keepArrayObjects 数组中列出的对象,但它不起作用。

我想更新原始数组本身,请帮助我。

最佳答案

您可以映射想要的条目并获取新对象。

let array = [{ id: 1, NoOfEmp: 12, Wages: 1000, TotalSI: 21, Salary: 3000 }, { id: 2, NoOfEmp: 13, Wages: 2000, TotalSI: 22,  Salary: 4000 }],
    keys = ['id', 'NoOfEmp', 'Wages'],
    result = array.map(o => Object.fromEntries(keys.map(k => [k, o[k]])));

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

IE兼容版本

var array = [{ id: 1, NoOfEmp: 12, Wages: 1000, TotalSI: 21, Salary: 3000 }, { id: 2, NoOfEmp: 13, Wages: 2000, TotalSI: 22,  Salary: 4000 }],
    keys = ['id', 'NoOfEmp', 'Wages'],
    result = array.map(function (source) {
        return keys.reduce(function (target, k) {
            target[k] = source[k];
            return target;
        }, {});
    });

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

关于javascript - 使用 Typescript 从数组 json 中删除未在另一个数组中列出的对象(项目),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64953870/

相关文章:

javascript - 如何在谷歌地图中点击标记时拆分页面?

javascript - 如何通过变量将方法名称传递给@click来绑定(bind)方法

javascript - 需要裁剪对象数组

angular - Angular 中的编译上下文是什么?

Typescript 未检测到非法参数

generics - 为什么类型参数在 TypeScript 中消失了?

javascript - Meteor 辅助函数在检索所有用户计数时出现异常

c# - Javascript 与 C#

reactjs - Saga 观察者未接收或处理调度的操作

javascript - 在一个函数中调用另一个函数