我有一个这样的对象数组:
var myArray = [
{field: 'id', operator: 'eq', value: id},
{field: 'cStatus', operator: 'eq', value: cStatus},
{field: 'money', operator: 'eq', value: money}
];
我如何删除一个特定的基于它的属性?
例:我该如何移除以“money”作为字段属性的数组对象?
我有一个这样的对象数组:
var myArray = [
{field: 'id', operator: 'eq', value: id},
{field: 'cStatus', operator: 'eq', value: cStatus},
{field: 'money', operator: 'eq', value: money}
];
我如何删除一个特定的基于它的属性?
例:我该如何移除以“money”作为字段属性的数组对象?
当前回答
下面是使用jQuery grep的另一个选项。传递true作为第三个参数,以确保grep删除与函数匹配的项。
users = $.grep(users, function(el, idx) {return el.field == "money"}, true)
如果你已经在使用jQuery,那么不需要填充,这可能比使用Array.filter有用。
其他回答
使用lodash库:
var myArray = [ {字段:'id',运算符:'eq',值:'id'}, {字段:'cStatus',运算符:'eq',值:'cStatus'}, {字段:'money',运算符:'eq',值:'money'} ]; var newArray = _。remove(myArray, function(n) { 返回n.value === 'money';; }); console.log(“数组”); console.log (myArray); console.log(“新数组”); console.log (newArray); < script src = " https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.5/lodash.js " > < /脚本>
var myArray = [
{field: 'id', operator: 'eq', value: id},
{field: 'cStatus', operator: 'eq', value: cStatus},
{field: 'money', operator: 'eq', value: money}
];
console.log(myArray.length); //3
myArray = $.grep(myArray, function(element, index){return element.field == "money"}, true);
console.log(myArray.length); //2
Element是数组中的一个对象。 第三个参数true表示将返回一个元素数组,这个数组不符合你的函数逻辑,false表示将返回一个元素数组,这个数组不符合你的函数逻辑。
假设您想通过其field属性删除第二个对象。
用ES6就这么简单。
myArray.splice(myArray.findIndex(item => item.field === "cStatus"), 1)
如果不使用jQuery,下面是代码。演示
var myArray = [
{field: 'id', operator: 'eq', value: 'id'},
{field: 'cStatus', operator: 'eq', value: 'cStatus'},
{field: 'money', operator: 'eq', value: 'money'}
];
alert(myArray.length);
for(var i=0 ; i<myArray.length; i++)
{
if(myArray[i].value=='money')
myArray.splice(i);
}
alert(myArray.length);
你也可以使用下划线库,它有很多功能。
Underscore是JavaScript的一个实用带库,提供了大量的函数式编程支持
遍历数组,并拼接出不需要的数组。为了更容易使用,向后迭代,这样你就不必考虑数组的活动性质:
for (var i = myArray.length - 1; i >= 0; --i) {
if (myArray[i].field == "money") {
myArray.splice(i,1);
}
}