我是构建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循环而不使用原型构造函数进行检查。
答案 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?
这会进行检查,因此不会对数据库进行额外写入,例如覆盖。感谢大家对这个问题的投入。它有所帮助。