Javascript 如何使用typescript从数组对象中删除除给定id之外的所有元素
我正在尝试从Javascript 如何使用typescript从数组对象中删除除给定id之外的所有元素,javascript,typescript,Javascript,Typescript,我正在尝试从projectSet中删除所有元素,除非id=myid。 我遇到了splice(),但不知道如何在我的代码中使用它。 例如: var myid = 2 var projectSet = [ {id: 1, name: "P1", description: "D1"}, {id: 2, name: "P2", description: "D2"}, {id: 3, name: "P3",
projectSet
中删除所有元素,除非id=myid
。
我遇到了splice()
,但不知道如何在我的代码中使用它。
例如:
var myid = 2
var projectSet =
[
{id: 1, name: "P1", description: "D1"},
{id: 2, name: "P2", description: "D2"},
{id: 3, name: "P3", description: "D3"},
]
for(var i = 0; i < projectSet.length; i++){
if (projectSet[i].id = myid)
{
if (i > -1)
{
this.projectSet.splice(i,1); // This is not working as expected.
}
}
}
console.log(projectSet)
你需要
- 使用
而不是==
(=
是赋值运算符)=
- 在对数组进行迭代时,不要
,否则将跳过下一个索引(例如,在索引1处拼接一个项目后,索引2处的内容将立即向下滑动到索引1,但您将在下一次迭代中继续比较索引2,跳过索引2处的内容,现在是索引1处的内容)拼接
过滤器
var myid=2
var项目集=
[
{id:1,名称:“P1”,描述:“D1”},
{id:2,名称:“P2”,描述:“D2”},
{id:3,名称:“P3”,描述:“D3”},
]
const filtered=projectSet.filter(obj=>obj.id==myid);
console.log(filtered)
您是在寻找(原始)数组引用的真正变体,如所提供的示例代码所示,还是通过例如filter
生成新数组已经完全解决了问题?
var projectSet =
[
{id: 2, name: "P2", description: "D2"}
]