我有一个循环,通过一个数组并 从中删除一些元素.
但是因为它从循环的同一个数组中删除了元素,所以会产生一些问题.
在这里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的新手,我被困在一项练习中.我正在使用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 数组
var countries = ["India","USA","China","Canada","China"];
Run Code Online (Sandbox Code Playgroud)
我只想从第二个位置删除“中国”,然后返回
var countries = ["India","USA","Canada","China"];
类似于java的东西linkedlist.remove(index)
我已阅读以下问题,但如果数组中存在重复元素,我不知道如何使用它。 如何在 JavaScript 中从数组中删除特定元素?
我尝试了两种不同的方式做某事,我对性能结果感到惊讶:
我有一个函数的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) 我知道这很简单,但是尝试搜索并且找不到可以解决我问题的任何东西.
所以我想说我有这个数组:
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],不知道为什么.
所以,我有一个数组,我想通过删除一个特定的元素.find().我应该如何将它用于此目的?我知道它应该有一个条件,让我们说
if(element === selectedItem)
{
Array.splice(index,1);
}
Run Code Online (Sandbox Code Playgroud)
但我不知道如何将其纳入其中.find().
我想要实现的是通过其索引删除数组元素,并将其余元素移到左侧。
因此,例如,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)
我正在学习 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) 我想在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) 我想使用打字稿从数组中进行批量删除。
我是通过使用 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 ×10
arrays ×8
reactjs ×2
angular ×1
angularjs ×1
for-loop ×1
items ×1
loops ×1
performance ×1
react-hooks ×1
typescript ×1