鍍金池/ 問答/HTML5  PHP  HTML/ 怎樣比較兩個(gè)數(shù)組的多的和少的

怎樣比較兩個(gè)數(shù)組的多的和少的

a[1,2,3,5,6]和b[1,2,4,6]怎樣得出a的多的和a的少的

回答
編輯回答
毀了心

php就用array_diff就可以

a少的:

array_diff($b, $a);

反過來,就是a多的:

array_diff($a, $b);

返回一個(gè)數(shù)組.

https://secure.php.net/manual...

2018年8月31日 22:30
編輯回答
別逞強(qiáng)

php比較的話簡單點(diǎn),js比較的話比較麻煩,最好寫個(gè)函數(shù)來判斷

2018年1月21日 14:15
編輯回答
舊酒館

求a有b沒有:

a.filter(item => !b.includes(item))

求b有a沒有:

b.filter(item => !a.includes(item))
2017年4月14日 17:41
編輯回答
歆久

用Math.max和Math.min方法可以迅速得到結(jié)果

2017年10月3日 19:11
編輯回答
雅痞

試試這個(gè) array_diff,以及其相關(guān)的函數(shù)array_diff_assoc等

2017年3月8日 13:39
編輯回答
孤島

通過您的問題分析,求數(shù)組a的多出的部分和a少出的部分,其實(shí)可以理解為求兩數(shù)組的差集,可以用兩種方法實(shí)現(xiàn):

 Array.prototype.minus = function (arr) {
    var result = new Array();
    var obj = {};
    for (var i = 0; i < arr.length; i++) {
        obj[arr[i]] = 1;
    }
    for (var j = 0; j < this.length; j++) {
        if (!obj[this[j]])
        {
            obj[this[j]] = 1;
            result.push(this[j]);
        }
    }
    return result;
};
let a = [1, 2, 3, 5, 6];
let b = [1, 2, 4, 6];
// 獲取數(shù)組a多出的部分
console.log(a.minus(b));
// 獲取數(shù)組a少出的部分
console.log(b.minus(a));

如果您的項(xiàng)目中有使用es6語法,那就用樓上es6語法:

let a = [1, 2, 3, 5, 6];
let b = [1, 2, 4, 6];
// 獲取數(shù)組a多出的部分
a.filter(item => !b.includes(item))
// 獲取數(shù)組a少出的部分
b.filter(item => !a.includes(item))

希望對您有所幫助。

2017年7月22日 07:32
編輯回答
寫榮
  • 將兩個(gè)數(shù)組分別循環(huán)做鍵值反轉(zhuǎn),也就是a變成array("1"=>"","2"=>""...),b變成array("1"=>"",..."4"=>"")
  • 再次循環(huán)a,檢查a的每個(gè)鍵key是否isset(b[key]),如果返回false,就是a的多的,如果返回true,就unset(b[key])
  • 再次循環(huán)b,檢查b的每個(gè)鍵key是否isset(a[key]),如果返回false,就是a的少的

算法時(shí)間復(fù)雜度為O(n)

2017年3月19日 14:43