查找和删除对象中的项目
Find and remove items from object
我下面有数据表使用的对象,我想知道如何按名称删除项目。
例
假设我想从下面的对象中删除 sEcho、mDataProp_1 和 sSearch,这是遍历所有项目并检查名称的最佳方法,还是有更简单的方法。
[{"name":"sEcho","value":1},{"name":"iColumns","value":9},
{"name":"sColumns","value":""},{"name":"iDisplayStart","value":0},
{"name":"iDisplayLength","value":10},{"name":"mDataProp_0","value":0},
{"name":"mDataProp_1","value":1},{"name":"mDataProp_2","value":2},
{"name":"mDataProp_3","value":3},{"name":"mDataProp_4","value":4},
{"name":"mDataProp_5","value":5},{"name":"mDataProp_6","value":6},
{"name":"mDataProp_7","value":7},{"name":"mDataProp_8","value":8},
{"name":"sSearch","value":""},{"name":"bRegex","value":false},
{"name":"sSearch_0","value":""},{"name":"bRegex_0","value":false},
{"name":"bSearchable_0","value":false},{"name":"sSearch_1","value":""},
{"name":"bRegex_1","value":false},{"name":"bSearchable_1","value":false},
{"name":"sSearch_2","value":""},{"name":"bRegex_2","value":false}]
例子会很棒。
谢谢
这里有一个小的 jsfiddle 可以做这个 http://jsfiddle.net/wHkTS/
这个想法是迭代该区域并将要删除的名称与当前迭代的对象名称进行比较,基本上构建一个新数组来重新分配不包含要删除的对象。
var data = [
{"name":"sEcho","value":1},{"name":"iColumns","value":9},
{"name":"sColumns","value":""},{"name":"iDisplayStart","value":0},
{"name":"iDisplayLength","value":10},{"name":"mDataProp_0","value":0},
{"name":"mDataProp_1","value":1},{"name":"mDataProp_2","value":2},
{"name":"mDataProp_3","value":3},{"name":"mDataProp_4","value":4},
{"name":"mDataProp_5","value":5},{"name":"mDataProp_6","value":6},
{"name":"mDataProp_7","value":7},{"name":"mDataProp_8","value":8},
{"name":"sSearch","value":""},{"name":"bRegex","value":false},
{"name":"sSearch_0","value":""},{"name":"bRegex_0","value":false},
{"name":"bSearchable_0","value":false},{"name":"sSearch_1","value":""},
{"name":"bRegex_1","value":false},{"name":"bSearchable_1","value":false},
{"name":"sSearch_2","value":""},{"name":"bRegex_2","value":false}
];
function remove(name) {
var arr = [], len, i;
// we reset len as data.length will change after erach remove
for(i = 0, len = data.length; i < len; i++) {
if (data[i].name != name) arr.push(data[i]);
};
data = arr;
};
console.log(data);
remove('sEcho');
console.log(data);
现代 ES5 的方式是Array.filter
:
var original = [{"name":"sEcho","value":1}, ... ];
var filtered = original.filter(function(val, index, array) {
var n = val.name;
return n !== 'sEcho' && n !== 'mDataProp_1' && n !== 'sSearch';
});
我认为您需要创建一个可以搜索然后删除它们的函数,例如
function deleteByName(needle, haystack) {
for(i in haystack) {
if ( haystack[i].name == needle) {
haystack.splice(i,1);
}
}
相关文章:
- 有没有一种方法可以添加相同的项目val=“0”;4〃;到JavaScript中数组的每个对象
- 按不同项目对对象数组进行排序
- 原始javascript将json对象中的项目打印到列表中的屏幕上
- 如何通过迭代对象数组来删除某些项目
- 在 JavaScript 对象中添加子对象时获取“无法设置未定义的属性'项目'”
- Javascript:从数组中删除包含带有侦听器的对象的项目的最佳方法
- M项目2:是否可以从DOM对象中获取M视图
- 范围$手表项目doens'不适用于javascript对象的字段
- 从jQuery数组或元素的对象列表中选择第N个项目
- AngularJS ForEach将新项目推送到对象中
- 如何删除localStorage中的特定项目/对象
- Javascript 如何将项目推送到存储在对象中的数组中
- 在单击选项卡式项目时隐藏和创建另一个对象 - HTML CSS
- 下划线.js,从一个对象中获取两个项目并添加到顶部
- JS深度比较2个对象并删除在第二个对象中找到的项目,而不是第一个
- 对对象数组中的项目进行分组和排序
- JavaScript 将项目添加到对象的开头
- Javascript -项目对象数组
- 删除项目对象javascript
- 如何使用AJAX显示/打印从数据库中获取的每个项目/对象的属性名称