1

我正在尝试从 javascript 中的多维数组中删除一个元素,该数组的构建方式如下:

selectedClients.push({client: id, package: package_id, transfer: transfer_id});

但是,可以有多个客户端,在这个数组的多个传输中的多个包中,我如何使用所有三个标识符而不是一个标识符从这个数组中删除一个元素?

例如:

Array[0]
{
client: 1
package: 1
transfer: 1
}
Array[1]
{
client: 2
package: 1
transfer: 1
}
Array[2]
{
client: 1
package: 2
transfer: 2
}

非常感谢

4

1 回答 1

1

您可以滚动自己的函数,该函数将接收具有与数组中的属性完全相同数量的属性的对象,然后slice输出它找到的对象:

假设你传入:

{client: 1, package: 1, transfer: 1}

让我们建造!

//Returns the new array if found, false if nothing
function removeObjectFromArray(objectToRemove, arrayOfObjects) {
    for (var i = 0; i < arrayOfObjects.length; i++) {
        var stringyArrObj       = JSON.stringify(arrayOfObjects[i]),
            stringyRemoveObject = JSON.stringify(objectToRemove);

            if (stringyArrObj === stringyRemoveObject)
                return arrayOfObjects.slice(i, i+1);
    }
return false; 
}

对象的顺序很重要,stringify如果对象的排序方式不同,则不会匹配。如果这是一个问题,您将不得不编写一些更大的函数来单独比较键。

于 2013-10-31T13:40:59.873 回答