我有一个数组
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' }
];我需要使用lodash删除项目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()完成此操作
发布于 2018-03-16 04:49:37
解决方案并不复杂,但有时需要一些时间才能找到它。您将使用_.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' }
];发布于 2018-03-16 04:54:18
对于这样的数组,您还可以使用lodash _.filter方法,或者本机数组.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>
https://stackoverflow.com/questions/49308913
复制相似问题