相关疑难解决方法(0)

在外部循环仍在同一阵列上运行时更改阵列

我有一个循环,通过一个数组并 从中删除一些元素.

但是因为它从循环的同一个数组中删除了元素,所以会产生一些问题.

在这里Players,我想从中删除一个player2

Players = [];
Players.push('player1');
Players.push('player2');
Players.push('player2');
Players.push('player2');
Players.push('player3');
Players.push('player2');
Players.push('player2');
Players.push('player2');

function check() {
    for (var i = 0; i < Players.length; i++) {
        if (Players[i] == 'player2')
            kick(Players[i])
    };
}

function kick(player) {
    for (var i = 0; i < Players.length; i++) {
        if (player == Players[i]) {
            Players.splice(i, 1);
            break;
        }
    };
}
Run Code Online (Sandbox Code Playgroud)

check();

console.info(util.inspect(Players));
Run Code Online (Sandbox Code Playgroud)

输出

[ 'player1', 'player3', 'player2', 'player2' ]

我该怎么做才能纠正这个问题?

javascript arrays loops

1
推荐指数
1
解决办法
49
查看次数

将JavaScript用于数组和循环

我是JavaScript的新手,我被困在一项练习中.我正在使用TextPad,因为这是我被要求用于此练习的内容.

基本上我需要有一个数字/整数的输入参数,然后有12个输出参数,表明输入已被除以12,并且每个输出参数的值不超过前一个或下一个超过1 .

到目前为止,我已经使用数组和for循环编写了下面的代码,但我只是不知道在获取输出参数方面如何或做什么来显示数组的每个值均匀分配.

var amount = "30";

var camels = ["cam1", "cam2", "cam3", "cam4", "cam5", "cam6", "cam7", "cam8", "cam9", "cam10", "cam11", "cam12"]

for(i=0;i<camels.length;i++){
    WScript.echo(camels[i] + "|" + amount/12);
}

for(i=1; i<13; i++){
    n = Math.random();
    o = n * 12;
    p = o + 1;
    q = Math.floor(p);
}
Run Code Online (Sandbox Code Playgroud)

这真的让我感到困惑,所以任何帮助都会受到赞赏,但请记住我是一个完整的新手.

javascript arrays for-loop

1
推荐指数
1
解决办法
75
查看次数

按位置从 javascript 数组中删除元素

我有一个 JavaScript 数组

var countries = ["India","USA","China","Canada","China"];
Run Code Online (Sandbox Code Playgroud)

我只想从第二个位置删除“中国”,然后返回

var countries = ["India","USA","Canada","China"];

类似于java的东西linkedlist.remove(index)

我已阅读以下问题,但如果数组中存在重复元素,我不知道如何使用它。 如何在 JavaScript 中从数组中删除特定元素?

javascript arrays

1
推荐指数
1
解决办法
7480
查看次数

为什么使用for比some()或filter()更快

我尝试了两种不同的方式做某事,我对性能结果感到惊讶:

我有一个函数的2个版本:

使用for:

$scope.hasBlockResult = function (IS, area, block) {
    if (!block)
        return false;
    for (var i = 0; i < $scope.filteredCartoList.length; i++) {
        if ($scope.filteredCartoList[i].informationSystem === IS 
            && $scope.filteredCartoList[i].area === area 
            && $scope.filteredCartoList[i].block === block)
            return true;
    }
    return false;
};
Run Code Online (Sandbox Code Playgroud)

并使用some()功能:

$scope.hasBlockResult = function (IS, area, block) {
    if (!block)
        return false;

    return ($scope.filteredCartoList.some(function (carto) {
        if (carto.informationSystem === IS && carto.area === area && carto.block === block)
            return true;
        return false;
    }));
}; …
Run Code Online (Sandbox Code Playgroud)

javascript performance angularjs

1
推荐指数
2
解决办法
8885
查看次数

我无法从此数组中删除此特定项目

我知道这很简单,但是尝试搜索并且找不到可以解决我问题的任何东西.

所以我想说我有这个数组:

 var chicken = [10, 45, 150, 5000, 25000, 100000, 150000];
Run Code Online (Sandbox Code Playgroud)

我想删除除25000之外的所有内容.所以我尝试了一个简单的迭代:

 for (var w=0; w<chicken.length; w++){
     if (chicken[w]<25000 || chicken[w]>25000){
    chicken.splice(w,1);
     }
 }
Run Code Online (Sandbox Code Playgroud)

它不起作用.输出是[45,5000,25000,150000],不知道为什么.

javascript arrays items

1
推荐指数
1
解决办法
32
查看次数

使用.find()从数组中删除元素

所以,我有一个数组,我想通过删除一个特定的元素.find().我应该如何将它用于此目的?我知道它应该有一个条件,让我们说

if(element === selectedItem)
{
   Array.splice(index,1);
} 
Run Code Online (Sandbox Code Playgroud)

但我不知道如何将其纳入其中.find().

javascript arrays

1
推荐指数
1
解决办法
77
查看次数

删除数组元素,并将其余元素移到左侧

我想要实现的是通过其索引删除数组元素,并将其余元素移到左侧。

因此,例如,deleteshifting array的第二个元素['a','b','c','d']返回array ['a','c','d']

我设法使用下面的代码做到了这一点,我想知道是否存在一些内置方法(或它们的组合)来以更简洁的方式做到这一点。

var src = ['a', 'b', 'c', 'd'];

const delShiftLeft = (arr, index) => arr.slice(0,index).concat(arr.slice(index+1));

console.log(delShiftLeft(src,1));
Run Code Online (Sandbox Code Playgroud)

javascript arrays

1
推荐指数
1
解决办法
215
查看次数

array.splice(index, 1) 返回已删除项目的数组

我正在学习 React hooks,我只是尝试执行一个简单的函数来从列表中删除该项目。为此,我使用 find、indexOf 和 splice。

在 onClick 函数中,我在 array.splice(indexOf, 1) 中使用 indexOf,但它仅返回列表中的项目。所有内容都会重新渲染并执行其应该执行的操作,但唯一渲染的项目是我刚刚尝试删除的项目。我缺少什么?

const [todos, setToDo] = useState(initialToDo);
const [input, setInput] = useState('');

const todoList = (todos) => {
    return (
        todos.map((todo) => {
        return (
            <div className='todo-list flex p-2 w-1/2 justify-between'>
                <p className="px-3">{todo.name}</p>
                <button 
                    className='rounded-sm border-2 px-2'
                    onClick={(e)=>{
                        let item = todos.find(el=>el.id == todo.id);
                        console.log(item)
                        let index = todos.indexOf(item);
                        console.log(index)
                        todos = todos.splice(index, 1)
                        // todos == item
                        setToDo(todos)
                    }}    
                >-</button>
            </div>
    )}))
}
Run Code Online (Sandbox Code Playgroud)

javascript arrays reactjs react-hooks

1
推荐指数
1
解决办法
3344
查看次数

如何从 React 中的状态数组中按索引删除项目

我想在React中从一个对象数组中删除一个对象到另一个数组中,但是我有点困惑,到目前为止我可以将一个对象推入数组中。但升技很困惑如何通过索引删除它。

数据

const addValues = [
  {
    "name": "New 1",
    "Value": [98,15,7,8]
  }, 
  {
    "name": "New 2",
    "Value": [7,18,9,40]
  },
  {
    "name": "New 3",
    "Value": [0,19,50,98]
  },
  {
    "name": "New 4",
    "Value": [56,89,34,20]
  },
]

const [value, setValue] = useState([]);

const handlePush = () => {
  setValue(oldArray => [...oldArray, newValue]);
};

 <div>{addValues?.map((inside, index) => {
    return (
      <React.Fragment key={index}>
         <p>{inside.name} <button onClick={() => setTags(oldArray => [...oldArray, addValue[index]])}>Add</button></p>
       </React.Fragment>
    )
  })}</div>
Run Code Online (Sandbox Code Playgroud)

javascript reactjs

1
推荐指数
1
解决办法
7306
查看次数

使用打字稿批量删除数组

我想使用打字稿从数组中进行批量删除。

我是通过使用 for 循环做到的。

this.versions = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12];
this.selectedVersions = [1, 2, 3, 4, 5, 6];
for (let i = 0; i < this.selectedVersions.length; i++) {
  this.versions = this.removeObjectFromArray(this.versions, this.selectedVersions[i]);
}


//removing a object from array
removeObjectFromArray(listOfdata: any, data: any) {
  let index = listOfdata.findIndex(function (o) {
    return o === data;
  })
  listOfdata.splice(index, 1);
  return listOfdata;
}
Run Code Online (Sandbox Code Playgroud)

但我不喜欢使用for loop.so 让我知道如何使用打字稿在数组中进行批量删除。

javascript arrays typescript angular

0
推荐指数
1
解决办法
633
查看次数