1

我需要对从 PapaParse 提取的数据进行 Vlookup (excel) 或过滤(如果 n > 1)。

// I know this is not asynchronous...
function filteredData(err,filterkey,data,wantedColumn) {
    if (err) console.error(error);
    t = [];
    for (i=0;i< data.length;i++;) {
        if (data[i][0] == filterkey) t[t.length] = data[i][wantedColumn];
    }
    return t;
}

有没有比每次要检查密钥时都检查所有数据更快更好的方法?我的数据在我的键上的列 [0] 中排序。(一定有很多更简单的方法,但是有内置的方法吗?)

我用标题解析我的数据,所以我有一个对象数组,而不仅仅是一个数组(但我可以改变它对我的用例来说不是必需的)。

4

1 回答 1

0

所以从这里我得到“只是散列它”。我的实现看起来有点不同(并且可能更慢,因为我不太了解那个)。但是在解析之后,我散列了查找“键”(在我的情况下是 column[0])因为我知道我的 skus 是唯一的,所以我的代码可以这么简单(我实际上有一个标题行)。

skudata = baby.parse(data,{header:false});
for (i=1;i<skudata.data.length;i++){
    skuhash[skudata.data[i][0]] = i;
}

然后,当我想过滤/查找时,我只是这样做:

if (skuhash.hasOwnProperty(sku)) {
    skuloc = skuhash[sku];
    if (skudata.data[skuloc][col] == key) { return true;}
}
于 2015-06-12T04:27:57.623 回答