Javascript 删除具有密钥Id的所有元素

Javascript 删除具有密钥Id的所有元素,javascript,Javascript,我点击一个按钮,将id传递给一个函数。 然后我想删除该id之后的所有id folderCollection={ 0:{id: 194, name: "Test Update"} 1:{id: 206, name: "Testssss"} 2:{id: 197, name: "Test11111"} 3:{id: 199, name: "Test11111"}} 例如Id=206。 数组现在应该只有两个键 0:{id: 194, name: "Test Update"} 1:{id: 206

我点击一个按钮,将id传递给一个函数。 然后我想删除该id之后的所有id

folderCollection={
0:{id: 194, name: "Test Update"} 
1:{id: 206, name: "Testssss"}
2:{id: 197, name: "Test11111"}
3:{id: 199, name: "Test11111"}}
例如Id=206。 数组现在应该只有两个键

0:{id: 194, name: "Test Update"} 
1:{id: 206, name: "Testssss"}
所以我试着用indexOf来获取id的indexOf,我打算用splice来删除其他数组

let Index = folderCollection.indexOf(folderId)
但该指数回到负一。
有人能帮你解决这个问题吗?

你可以通过如下方式进行过滤:

var folderCollection=[
{
身份证号码:194,
名称:“测试更新”
},
{
身份证号码:206,
名称:“Testssss”
},
{
身份证号码:197,
名称:“Test11111”
},
{
身份证号码:197,
名称:“Test11111”
}
];
函数removeByID(id){
var result=folderCollection.filter(函数(obj){
返回obj.idremoveByID(197)
您的数组格式不正确

试试这个:

let folderCollection=[
{id:194,名称:“测试更新”},
{id:206,名称:“Testssss”},
{id:197,名称:“Test11111”},
{id:197,名称:“Test11111”}]
var index=folderCollection.findIndex(x=>x.id==206);
如果(索引>-1)
folderCollection.splice(索引+1,folderCollection.length索引);

console.log(folderCollection)
如果您的集合是一个
对象,而不是
数组
,则无法在其上运行
indexOf

你可以通过几种方式实现你的目标,在我看来,最具可读性的是:

const folderCollection={
0: {
身份证号码:194,
名称:“测试更新”
},
1: {
身份证号码:206,
名称:“Testssss”
},
2: {
身份证号码:197,
名称:“Test11111”
},
3: {
身份证号码:197,
名称:“Test11111”
}
}
常数splitBy=206;
康斯特阿萨雷酒店=
Object.keys(folderCollection)
.map(i=>folderCollection[i]);
const indexOf=asArray.findIndex(o=>o.id===splitBy)+1;
const sliced=asArray.slice(0,indexOf);
常量asObj={…切片};

console.log(“asObj=”,asObj)可能不是最简洁的代码,但在我看来可读性很强

let folderCollection={
0:{id:194,名称:“测试更新”},
1:{id:206,名称:“Testssss”},
2:{id:197,名称:“Test11111”},
3:{id:197,名称:“Test11111”}
}
const filterCollectionById=函数(集合,id){
让keyArray=Object.keys(集合);
让filteredCollection={};
for(设i=0;i
默认情况下,您不能在对象上迭代,这就是为什么您必须首先用它的键创建一个数组

然后你可以迭代,一旦你找到想要的对象,它就会停止。如果没有该ID所在的对象,只需返回完整的对象即可。希望能有帮助

const folderCollection={
0: {
身份证号码:194,
名称:“测试更新”
},
1: {
身份证号码:206,
名称:“Testssss”
},
2: {
身份证号码:197,
名称:“Test11111”
},
3: {
身份证号码:197,
名称:“Test11111”
}
}
函数removingElements(集合,id){
常量数组=Object.values(集合);
const index=array.findIndex(elm=>elm.id==id);
返回数组.reduce((newCollection、elm、currentIndex)=>{
如果(index==-1 | | currentIndex获取更多示例:

var folderCollection={
0:{id:194,名称:“测试更新”},
1:{id:206,名称:“Testssss”},
2:{id:197,名称:“Test11111”},
3:{id:197,名称:“Test11111”};
函数deleteAfterKey(值){
var temp=对象键(folderCollection);
var测试=温度过滤器(功能(行){
返回folderCollection[row]。id==值;
});
var idObject=test[0];//console.log(idObject);
if(idObject){
对于(变量i=temp.length-1;i>idObject;i--){
//控制台日志(i);
删除folderCollection[i];
//console.log(folderCollection);
}
}
}
删除后键(206);

console.log(folderCollection);
是对象还是数组?您需要共享domfolderCollection是对象。
indexOf
仅对数组有效,而不是您显示的对象和您说的内容相互矛盾。请执行
console.log(object.prototype.toString.call(folderCollection));
并告诉我们它记录了什么。folderCollection是他的问题中的一个对象。OP希望删除在一个具有特定ID的条目之后的条目,而不是所有ID低于给定数字的条目。@JosephWebber EditedYes这将不起作用,因为数字可以是随机的order@GreatKhan2016您可以将您的号码传递给
removeByID
met删除itemshis数组的方法没有错误。它是一个对象。这一点很清楚。如果folderCollection是一个对象,那么它不是一个有效的语法。OP在原始帖子中多次将其作为数组提到。
let folderCollection={
    0:{id: 194, name: "Test Update"} ,
    1:{id: 206, name: "Testssss"},
    2:{id: 197, name: "Test11111"},
    3:{id: 197, name: "Test11111"}
}

const filterCollectionById = function(collection, id) {
  let keyArray = Object.keys(collection);
  let filteredCollection = {};

  for (let i = 0; i < keyArray.length; i++) {

    filteredCollection[i] = collection[i];

    if(collection[i].id === id) {
      break;
    }
  }

  return filteredCollection;

}

console.log(filterCollectionById(folderCollection, 206));