Lodash在数组中省略了值

时间:2018-03-15 20:48:07

标签: javascript lodash

我有一个数组

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()

执行此操作

2 个答案:

答案 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;
&#13;
&#13;