如何在 lodash 过滤器中保留对象键

时间:2021-07-23 17:10:41

标签: javascript reactjs lodash

我有一个数组

const sampleObject = {Color: "Blue", Size: "39, 41"}

尝试时使用 Lodash 的 _.filter

_.filter(sampleObject, (entry) => entry !== 'Blue')

我明白

['39, 41']

但我想要的结果是

{Size: '39, 41'}

const sampleObject = {
  Color: "Blue",
  Size: "39, 41"
}
const filtered = _.filter(sampleObject, (entry) => entry !== 'Blue')
console.log(filtered);
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/lodash@4.17.10/lodash.min.js"></script>

3 个答案:

答案 0 :(得分:3)

您在寻找_.pickBy()吗?

const sampleObject = {
  Color: "Blue",
  Size: "39, 41"
}
const filtered = _.pickBy(sampleObject, (value,key) => value !== 'Blue')
console.log(filtered);
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/lodash@4.17.10/lodash.min.js"></script>

答案 1 :(得分:0)

你需要这样做似乎很奇怪,但你可以使用 fromEntries 和条目来做到这一点

const sampleObject = {Color: "Blue", Size: "39, 41"}
const result = Object.fromEntries(Object.entries(sampleObject).filter(x => x[1] !== 'Blue'));

console.log(result);

答案 2 :(得分:0)

如果你只想要一个新对象的一个​​属性,直接抓取它:

const sampleObject = {Color: "Blue", Size: "39, 41"};

const result = {Size: sampleObject.Size};

console.log(result);

或者如果您需要动态密钥:

const sampleObject = {Color: "Blue", Size: "39, 41"};

const key = "Size";

const result = {[key]: sampleObject[key]};

console.log(result);

相关问题