gpt4 book ai didi

JavaScript:从数组中提取一个元素

转载 作者:行者123 更新时间:2023-11-28 15:53:23 25 4
gpt4 key购买 nike

我正在尝试从数组“shapes”中提取一个元素,其中该元素的 id 等于 DragID。我想知道我是否以正确的方式这样做......这会产生很多问题,例如,有时某些元素在将它们从保留数组推回真实数组时会被跳过。请告诉我是否有更好的方法......

 var reserveShapes = [];
while(1)
{
drag = shapes.pop();
if(drag.id == dragID)
{
break;
}
reserveShapes.push(drag);
}

//alert(reserveShapes.length);
for(var j=0; j<reserveShapes.length; j++)
{
ar temp = reserveShapes.pop();
shapes.push(temp);
}

最佳答案

哇。您的想法可能可行,但有一种更简洁的方法:

var drag;
for (int i = 0; i < shapes.length; i++) {
if (shapes[i].id == dragID) {
drag = shapes[i];
break;
}
}

if (drag) {
// a matching shape was found
// ...
}

如果您想从数组中的位置删除该元素,请使用splice:

    if (shapes[i].id == dragID) {
drag = shapes.splice(i, 1);
break;
}

您绝对不必使用 pushpop 来遍历数组。

编辑引用资料,显示您可以使用 [] 访问数组

阅读内容有点密集,但 ECMA-262(JavaScript 订阅的最新标准)的规范位于 http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf 。第 67 页上写道:

Properties are accessed by name, using either the dot notation: 
MemberExpression . IdentifierName
CallExpression . IdentifierName
or the bracket notation:
MemberExpression [ Expression ]
CallExpression [ Expression ]

实际上,所有对象都允许使用 [] 访问器,而数组是特殊对象。第122页定义了一个数组:

Array objects give special treatment to a certain class of property names. A property name P (in the form of a String value) is an array index if and only if ToString(ToUint32(P)) is equal to P and ToUint32(P) is not equal to 2^ 32 - 1. A property whose property name is an array index is also called an element. Every Array object has a length property whose value is always a nonnegative integer less than 2^ 32.

这归结为“如果您使用数字作为对象属性的索引,则该对象将被视为数组。”

该规范相当难读,因此这里有一些在 JavaScript 中使用数组的更简单的引用:

关于JavaScript:从数组中提取一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19796626/

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