下划线中的where()没有按预期工作

时间:2015-04-24 05:05:15

标签: node.js underscore.js

使用_.where()时遇到一些问题。它没有按预期工作。 这是我的示例JSON,

var result = [
  {
    image: {
      id: 158,
      ig_id: "968545232755317101_1532289565",
      status: "hide",
    },
    id: 1,
    month: 4,
    year: 2015
  },
  {
    image: {
      id: 152,
      ig_id: "968547282620733844_1532289565",
      status: "approve",
    },
    id: 2,
    month: 4,
    year: 2015
  },
]

我想获得image.status ='hide'的集合。我确实喜欢这个,

console.log(_.where(result.image, { status : 'hide'})); // This return []
console.log(_.where(result, { image.status : 'hide'})); // This will error
console.log(_.where(result, { 'image.status' : 'hide'})); // This return []

我不知道如何以正确的方式做到这一点。我真的需要帮助。

感谢。

1 个答案:

答案 0 :(得分:1)

你可以用这样的香草JS做到这一点:

console.log(result.filter(function (value) { 
    return value.image.status === 'hide'; 
}));

我不相信Underscore.js支持在where()中进行深度比较,但是如果你使用lodash,这可行:

console.log(_.where(result, { image: {status : 'hide'}}));