在嵌入式数组中查找值

时间:2015-11-09 14:28:17

标签: node.js mongoose

如何根据此架构在集合“inputs”中找到值:

var inputJournalSchema = new Schema({
    createdAt: {type: Date, default: Date.now},
    inputs: [{ key: String, value: String}]
});

基本上,我想检查是否存在具有特定键的元素,如果存在,则检查哪个索引位置。

但我该怎么做?

1 个答案:

答案 0 :(得分:0)

使用架构创建对象后:

object.inputs[0].key;

这是一种查找特定键的简单方法,假设对象存储在数组中。如果对象没有存储在数组中,则不需要循环。

var findThis = 1;
var objects = [{}, {}, {}, {}];

objects.forEach(function (object) {
    object.inputs.forEach(function (input, index) {
        if (input.key == findThis) {
            // logic for once found here
            console.log(index);
        }
    });
});

此代码也可以包含在一个函数中,该函数使用键作为参数返回索引:

function findIndex (objects, key) {
    objects.forEach(function (object) {
        object.inputs.forEach(function (input, index) {
            if (input.key == key) {
                // logic for once found here
                return index;
            }
        });
    });
};