2つの配列をJavascriptで交差させる適切な方法はありますか?
私は2つのアレイに正しい方法に交差するようにしようとしていますが、私はここに Simplest code for array intersection in javascript2つの配列をJavascriptで正しく交差させる方法
マイコード仮定として
私の入力はにソートされていないいくつかの困難を見つける:
/**
* @param {number[]} nums1
* @param {number[]} nums2
* @return {number[]}
*/
var intersect = function(nums1, nums2) {
var t, a = nums1,b = nums2;
if (b.length > a.length) t = b, b = a, a = t;
return a.filter(x => b.includes(x))
};
console.log(intersect([1, 2], [1, 1])); //[1] correct
console.log(intersect([1, 1], [1, 2])); //[1,1] wrong
console.log(intersect([1], [1, 1])); //[1,1] wrong
console.log(intersect([1, 1, 1], [1, 1])); //[1,1,1] wrong
/**
* @param {number[]} nums1
* @param {number[]} nums2
* @return {number[]}
*/
var intersect = function(nums1, nums2) {
return nums1.filter((n) => nums2.indexOf(n) !== -1);
};
console.log(intersect([1, 2], [1, 1])); //[1] right
console.log(intersect([1, 1], [1, 2])); //[1,1] wrong
console.log(intersect([1], [1, 1])); //[1] right
console.log(intersect([1, 1, 1], [1, 1])); //[1,1,1] wrong
/**
* @param {number[]} nums1
* @param {number[]} nums2
* @return {number[]}
*/
var intersect = function(nums1, nums2) {
var A=nums1,B=nums2;
var m = A.reduce(function(m, v) { m[v] = 1; return m; }, {});
return B.filter(function(v) { return m[v]; });
};
console.log(intersect([1, 2], [1, 1])); //[1,1] wrong
console.log(intersect([1, 1], [1, 2])); //[1] right
console.log(intersect([1], [1, 1])); //[1,1] wrong
console.log(intersect([1, 1, 1], [1, 1])); //[1,1] right
/**
* @param {number[]} nums1
* @param {number[]} nums2
* @return {number[]}
*/
var intersect = function(nums1, nums2) {
var a = nums1,b=nums2;
var ai=0, bi=0;
var result = [];
while(ai < a.length && bi < b.length)
{
if (a[ai] < b[bi]){ ai++; }
else if (a[ai] > b[bi]){ bi++; }
else /* they're equal */
{
result.push(a[ai]);
ai++;
bi++;
}
}
return result;
};
console.log(intersect([1, 2], [1, 1])); //[1] right
console.log(intersect([1, 1], [1, 2])); //[1] right
console.log(intersect([1], [1, 1])); //[1] right
console.log(intersect([1, 1, 1], [1, 1])); //[1] right
console.log(intersect([2,1],[1,1])); //[] wrong
そしてはその回答からアルゴリズムことを試してみました
ここで私は間違っていますか?
私はわかりませんどのような目的あなたの質問のeです。あなたはどんな答えを期待していますか?あなたは人々にこれらの実装のそれぞれを "修正"したいですか? –
すべてのテストケースを通過する完璧なアルゴリズムを見つけようとしています – Microsmsm
"交差"とはどういう意味ですか? 2つの配列のすべての値を1つの配列に結合するか、または両方の配列のすべての固有の値を新しい単一の配列にコピーすることを意味しますか? – Pytth