我从数组中删除了一个元素。现在,我需要显示删除了哪些项目以及剩余的项目,但是没有成功。假设数组如下:
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数组显示相同的值。在比较长度时会产生问题。
答案 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);