构造JavaScript数组原型方法

时间:2015-03-14 13:53:16

标签: javascript arrays prototype

我是构建JavaScript数组原型的新手。请仅粘贴之前直接适用的链接,因为我一直在SO和w3school上采购。 https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/prototype

我想为数组创建一个方法来检查' id'对象中的字段尚未存在于数组中。如果没有,则推送'对象进入数组,否则什么都不做。

每个对象都有一个独特的ID'字段。

eg

var array = [{ id: 001, title: 'some title'},
               { id: 002, title: 'other title'}]

var object = {id: 001, title: 'some title'}


// if object.id does not exist in array...
array.push(object)
//else do nothing

我希望该功能可以使用' id' field作为参数,因此该函数有更广泛的用途。

扩展array.Prototype有什么缺点吗?否则我可以执行for循环而不使用原型构造函数进行检查。

3 个答案:

答案 0 :(得分:1)

由于你的id是整数,你可以直接在数组中设置该索引。

var array = [];
var object = {id: 001, title: 'some title'};
array[object.id] = object;

这会覆盖该位置的元素,这样您就不会获得具有相同ID的重复项。如果你的id很远,你的js引擎会自动切换到使用稀疏数组而不是连续数组。

答案 1 :(得分:0)

考虑使用对象而不是以id作为键的数组,而不是尝试更改Array的行为。

var objects = {};
var object = {id: 001, title: 'some title'}
objects[object.id] = object;

这样你也可以通过id从父对象中检索你的对象。 e.g。

var result = objects[001];

答案 2 :(得分:0)

我使用function containsObject找到了布拉德的回答 How do I check if an array includes an object in JavaScript?

这会进行检查,因此不会对数据库进行额外写入,例如覆盖。感谢大家对这个问题的投入。它有所帮助。