如何使用javascript获取已删除项目的值

时间:2019-12-06 22:57:56

标签: javascript

我从数组中删除了一个元素。现在,我需要显示删除了哪些项目以及剩余的项目,但是没有成功。假设数组如下:

let person = ['Cercei','Snow','Arya','Sansa'] 

我删除了“雪”和“塞西”。因此,我需要将两件事显示在两个不同的新数组中。

delPerson = ['Cercei','Snow'] 
remArray = ['Arya','Sansa']

如何使用JavaScript做到这一点?在我的应用程序中,我有每个名称都有删除图标,因此我可以删除任何名称。我想将已删除的名称和剩余名称放入两个不同的数组中。请帮助我如何使用javascript或lodash

让我告诉您我的应用代码:

let person = personData.map(n => n.name) 
let remPerson = person.filter(p => person.indexOf(p) !== -1)

现在,person和remPerson数组显示相同的值。在比较长度时会产生问题。

3 个答案:

答案 0 :(得分:1)

一种方法是使用Array.reduce

>>> log_paths = [handler.baseFilename for handler in job_logger.handlers if isinstance(handler, logging.FileHandler)]
>>> next(iter(log_paths))
'./mypath/job_logger.log'

答案 1 :(得分:0)

您可以使用splice,但这将修改您的原始数组。我不清楚在OP的情况下是否可以这是Mozilla在splice上的文档:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/splice

let person = ['Cercei','Snow','Arya','Sansa'];

let delPerson = person.splice(0, 2);

console.log(delPerson);
console.log(person);

答案 2 :(得分:0)

您可以使用拼接来删除项目,也可以跟踪两个单独的数组:

let personData  = [{name:'Cercei'},{name:'Snow'},{name:'Arya'},{name:'Sansa'}];
let person      = personData.map(n=>n.name);
let removeItems = ['Cercei','Snow'];
let delPerson   = [];

removeItems.forEach(item=>{
  delPerson.push( 
    ...person.splice( person.indexOf(item), 1 )
  )
});

console.log('delPerson: ', delPerson);
console.log('remaining: ', person);