只是为了好玩,另一种冗长的方法:
function getCommon(a) {
var result = a[0].slice();
var mem, arr, found = false;
var i = result.length;
while (i--) {
mem = result[i];
for (var j=1, jLen=a.length; j<jLen; j++) {
arr = a[j];
found = false;
var k = arr.length;
while (k-- && !found) {
if (mem == arr[k]) {
found = true;
}
}
if (!found) {
result.splice(i,1);
break;
}
}
}
return result;
}
var data = [
['taco', 'fish', 'apple', 'pizza', 'mango', 'pear'],
['apple', 'orange', 'banana', 'pear', 'fish', 'pancake', 'taco', 'pizza'],
['banana', 'pizza', 'fish', 'apple'],
['banana', 'pizza', 'fish', 'apple', 'mango', 'pear']
];
编辑
查找基于Object.prototype上的不可枚举属性的函数:
function getNeverEnumerables() {
var spNames = 'constructor toString toLocaleString valueOf ' +
'hasOwnProperty isPrototypeOf propertyIsEnumerable foo';
var spObj = {foo:'', 'constructor':'', 'toString':'', 'toLocaleString':'', 'valueOf':'',
'hasOwnProperty':'', 'isPrototypeOf':'', 'propertyIsEnumerable':''};
var re = [];
for (var p in spObj) {
re.push(p);
}
re = new RegExp('(^|\\s)' + re.join('|') + '(\\s|$)','g');
return spNames.replace(re, ' ').replace(/(^\s+)|\s\s+|(\s+$)/g,'').split(' ');
}
document.write(getNeverEnumerables().join('<br>'));