imp*_*335 236 javascript arrays jquery properties object
我有一个像这样的对象数组:
var myArray = [
{field: 'id', operator: 'eq', value: id},
{field: 'cStatus', operator: 'eq', value: cStatus},
{field: 'money', operator: 'eq', value: money}
];
Run Code Online (Sandbox Code Playgroud)
如何根据其属性删除特定的?
例如,如何使用'money'作为字段属性删除数组对象?
jAn*_*ndy 321
一种可能性:
myArray = myArray.filter(function( obj ) {
return obj.field !== 'money';
});
Run Code Online (Sandbox Code Playgroud)
请注意,filter
创建一个新阵列.引用原始数组的任何其他变量都不会获得过滤后的数据,尽管您myArray
使用新引用更新原始变量.谨慎使用.
Nie*_*sol 81
遍历数组,然后splice
输出你不想要的数组.为了便于使用,请向后迭代,这样您就不必考虑数组的实时特性:
for (var i = myArray.length - 1; i >= 0; --i) {
if (myArray[i].field == "money") {
myArray.splice(i,1);
}
}
Run Code Online (Sandbox Code Playgroud)
Sup*_*nda 34
在 ES6 中,只有一行。
const arr = arr.filter(item => item.key !== "some value");
Run Code Online (Sandbox Code Playgroud)
:)
Per*_*cek 20
假设您要通过它的field属性删除第二个对象.
使用ES6就可以轻松实现.
myArray.splice(myArray.findIndex(item => item.field === "cStatus"), 1)
Run Code Online (Sandbox Code Playgroud)
Sri*_*har 14
您可以使用lodash的findIndex来获取特定元素的索引,然后使用它进行拼接.
myArray.splice(_.findIndex(myArray, function(item) {
return item.value === 'money';
}), 1);
Run Code Online (Sandbox Code Playgroud)
更新
你也可以使用ES6的findIndex()
findIndex()方法返回数组中第一个满足提供的测试函数的元素的索引.否则返回-1.
myArray.splice(myArray.findIndex(myArray, function(item) {
return item.value === 'money';
}), 1);
Run Code Online (Sandbox Code Playgroud)
这是使用jQuery grep的另一个选项.true
作为第三个参数传递,以确保grep删除与您的函数匹配的项目.
users = $.grep(users, function(el, idx) {return el.field == "money"}, true)
Run Code Online (Sandbox Code Playgroud)
如果您已经在使用jQuery,则不需要填充程序,这可能是有用的而不是使用Array.filter
.
小智 7
我们可以使用以下 2 种方法根据属性删除元素。
Run Code Online (Sandbox Code Playgroud)testArray.filter(prop => prop.key !== 'Test Value')
Run Code Online (Sandbox Code Playgroud)const index = testArray.findIndex(prop => prop.key === 'Test Value') testArray.splice(index,1)
归档时间: |
|
查看次数: |
174113 次 |
最近记录: |