如何使函数在javascript中可重用
How to make the function reusable in javascript
我有一个对象数组,属性是id和name。现在我有了一个函数,可以检查id和name的重复值。我的问题是我让这个功能变得多余。我只想使用一次代码,使其可重用。
唯一的区别是属性名称。有没有只使用一次函数的解决方案?感谢
var data = [{id: 0, name: "lina"}, {id: 1, name: "jona"}, {id: 2, name: "lina"}, {id: 0},{id: 3, name: "anna"}];
function isDuplicateID() {
for(var i = 0; i < data.length; i++) {
if(data[i].id === 0)
continue;
for(var j = i+1; j < data.length; j++) {
if(data[j].id === data[i].id)
return true;
}
}
return false;
}
function isDuplicateName() {
for(var i = 0; i < data.length; i++) {
if(data[i].name === 0)
continue;
for(var j = i+1; j < data.length; j++) {
if(data[j].name === data[i].name)
return true;
}
}
return false;
}
alert(isDuplicateID())
alert(isDuplicateName())
您可以添加参数key
并使用它
function isDuplicateID(key) {
for(var i = 0; i < data.length; i++) {
if(data[i][key] === 0)
continue;
for(var j = i+1; j < data.length; j++) {
if(data[j][key] === data[i][key])
return true;
}
}
return false;
}
obj.propName
或obj[propName]
获取。
var data = [{id: 0, name: "lina"}, {id: 1, name: "jona"}, {id: 2, name: "lina"}, {id: 0},{id: 3, name: "anna"}];
function isDuplicate(propName) {
for (var i = 0; i < data.length; i++) {
if (data[i][propName] === 0)
continue;
for (var j = i + 1; j < data.length; j++) {
if (data[j][propName] === data[i][propName])
return true;
}
}
return false;
}
alert(isDuplicate("id"))
alert(isDuplicate("name"))
而不是使用。要访问属性,可以将属性名称括在方括号中,即不要。你可以使用[]。
这意味着您可以传入属性名称,这是javascript的一大特性。
function isDuplicate(propertyName) {
for(var i = 0; i < data.length; i++) {
if(data[i][propertyName] === 0)
continue;
for(var j = i+1; j < data.length; j++) {
if(data[j][propertyName] === data[i][propertyName])
return true;
}
}
return false;
}
将参数传递给函数,以便在属性之间进行选择:
function isDuplicate(field) {
for(var i = 0; i < data.length; i++) {
if(data[i][field] === 0)
continue;
for(var j = i+1; j < data.length; j++) {
if(data[j][field] === data[i][field])
return true;
}
}
return false;
}
alert(isDuplicate('id'))
alert(isDuplicate('name'))
我倾向于重写该函数,这样您就只有一个循环使用indexOf
来检查临时数组中的重复项。
function hasDuplicate(type) {
for (var dupe = [], i = 0, l = data.length; i < l; i++) {
var val = data[i][type];
if (dupe.indexOf(val) > -1) return true;
if (val !== 0) dupe.push(val);
}
return false;
}
hasDuplicate('id');
演示
相关文章:
- 如何创建php函数或任何脚本/jquery Javascript,使我能够获取与复选框关联的值并添加它们
- Javascript:如何使自动建议的结果在单击时移动到输入字段中
- Javascript:如何使变量中的图像可点击
- javascript如何使对象内联
- 通过php加载javascript,使其不会;t在源中直接可见
- 如何在javascript中使两个按钮显示在一起
- 如何在javascript中使画布显示自定义图像作为背景
- 在css3页面淡入后启动javascript以使动画更流畅
- Javascript:隐藏/使其难以理解客户端对象
- 如何在javascript中使复选框只读
- 在 javascript 中使 split() 方法使用双引号而不是单引号创建数组
- 在javascript中使隐藏的元素可见是css
- 在 JavaScript 中使对象非全局
- Javascript将使对象具有相同的大小
- 为什么这个 JavaScript 代码使整个数组指向同一个对象
- Javascript;如何使函数全局可访问
- Javascript - 如何使按钮生成 1-12 的随机整数,并让按钮不断产生相同的数字
- 将窗格拆分器和jstree与Javascript结合使用时出现问题
- 如何在 Javascript 中使一组函数在另一组函数之后出现
- JavaScript函数使我的浏览器崩溃