gpt4 book ai didi

javascript - 循环遍历数组并删除特定类型的元素 d3.js

转载 作者:行者123 更新时间:2023-11-28 18:42:15 24 4
gpt4 key购买 nike

data 是一个包含不同类型元素的数组。我想循环遍历这个数组并删除类型为 A 和类型 B 的所有元素。这是我到目前为止所拥有的:

for(i=0;i<data.length;i++){ 
if (i.type === "A"|| i.type === "B") {
data.splice(i, 1);
}
}

即使某些类型为 AB,它也不会删除任何内容。

有人可以告诉我为什么这是错误的以及我应该如何解决它吗!

提前致谢!

最佳答案

问题

您的代码中实际上有两个错误:

  1. 您正在向前循环。如果要在循环遍历数组元素的同时拼接数组,则需要向后循环。
  2. i.type 应为 data[i].typei 只是一个数字,甚至没有 type 属性。

固定代码

for(var i = data.length-1; i >= 0; i--){ 
if (data[i].type === "A"|| data[i].type === "B") {
data.splice(i, 1);
}
}

演示

var data = [
{ value : 'Tom', type : 'A' },
{ value : 'Susan', type : 'C' },
{ value : 'Frank', type : 'B' },
{ value : 'Hakeem', type : 'A' },
{ value : 'Ali', type : 'C' },
{ value : 'Thomas', type : 'B' },
{ value : 'An', type : 'D' }
];

for(var i = data.length-1; i >= 0; i--){
if (data[i].type === "A"|| data[i].type === "B") {
data.splice(i, 1);
}
}

document.body.innerHTML = JSON.stringify(data);

(另请参阅 this Fiddle )

<小时/>

注意

如果 - 而不是使用 data[i].type === "A"|| 删除所有对象,您实际上会获得更好的性能data[i].type === "B" - 您只需创建一个新数组,然后复制原始数组中的所有值,其中 data[i].type !== "A"&&数据[i].type!==“B”:

var data = [
{ value : 'Tom', type : 'A' },
{ value : 'Susan', type : 'C' },
{ value : 'Frank', type : 'B' },
{ value : 'Hakeem', type : 'A' },
{ value : 'Ali', type : 'C' },
{ value : 'Thomas', type : 'B' },
{ value : 'An', type : 'D' }
];

var copy = [];
for(var i = 0; i < data.length; i++){
if (data[i].type !== "A" && data[i].type !== "B") {
copy.push(data[i]);
}
}
data = copy;

document.body.innerHTML = JSON.stringify(data);

(另请参阅 this Fiddle )

关于javascript - 循环遍历数组并删除特定类型的元素 d3.js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35944879/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com