我有一个数组
var arrIn = [
{ 'a': 'a-0', 'b': 'b-0', 'c': 'c-0' },
{ 'a': 'a-1', 'b': 'b-1', 'c': 'c-1' },
{ 'a': 'a-2', 'b': 'b-2', 'c': 'c-2' }
];
我需要移除项目arrIn.a === 'a-1'
并拥有
var arrOut = [
{ 'a': 'a-0', 'b': 'b-0', 'c': 'c-0' },
{ 'a': 'a-2', 'b': 'b-2', 'c': 'c-2' }
];
如何使用Lodash _.omit()
或_.omitBy()
?
答案 0 :(得分:2)
解决方案并不复杂,但有时需要一些时间才能找到它。您将使用_.omitBy()然后将对象转换为具有Object.values()的数组:
var arrIn = [
{ 'a': 'a-0', 'b': 'b-0', 'c': 'c-0' },
{ 'a': 'a-1', 'b': 'b-1', 'c': 'c-1' },
{ 'a': 'a-2', 'b': 'b-2', 'c': 'c-2' }
];
var arrOut = _.omitBy(arrIn, {'a': 'a-1'});
arrOut = Object.values(arrOut);
console.info('_omit:',{arrIn: arrIn, arrOut:arrOut});
你在console =>
[
{ 'a': 'a-0', 'b': 'b-0', 'c': 'c-0' },
{ 'a': 'a-2', 'b': 'b-2', 'c': 'c-2' }
];
答案 1 :(得分:1)
使用这样的数组,您还可以使用lodash _.filter
方法或本机Array .filter
方法(如果可用)(旧浏览器不支持)。
两者的例子:
var arrIn = [
{ 'a': 'a-0', 'b': 'b-0', 'c': 'c-0' },
{ 'a': 'a-1', 'b': 'b-1', 'c': 'c-1' },
{ 'a': 'a-2', 'b': 'b-2', 'c': 'c-2' }
];
// Using Lodash:
var lodashResult = _.filter(arrIn, function(item) { return item.a !== "a-1"; });
console.log("Lodash:", lodashResult);
// Using built-in filter method and es6 arrow syntax:
var filterResult = arrIn.filter(item => item.a !== "a-1");
console.log("Built-in filter:", filterResult);

<script src="https://cdn.jsdelivr.net/npm/lodash@4.17.5/lodash.min.js"></script>
&#13;