0

下面的函数如何适应二维数组搜索?我想不通。我需要下面的示例来生成'[“sainsburys”]'。

谢谢

Array.prototype.diff = function(a) {
    return this.filter(function(i) {return !(a[0].indexOf(i[0]) > -1);});
};

var oldSupermarkets = [["asda"], ["tesco"], ["sainsburys"]];
var newSupermarkets = [["asda"], ["tesco"]];
4

1 回答 1

1

这可以满足您的要求:

Array.prototype.diff = function(a) {
    var b = a.map(function(x) { return x[0]; });
    return this.filter(function(x) { return b.indexOf(x[0]) == -1; });
};

如果你能告诉我们这些二维数组代表什么,我可以给你一个更准确的答案——如果内部数组有多个项目意味着什么。目前它们看起来只是不必要的,你可以将它们展平并使用一维diff函数。

于 2013-07-24T12:50:01.773 回答