Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/433.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用typescript从数组对象中删除除给定id之外的所有元素_Javascript_Typescript - Fatal编程技术网

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"}
    ]