2017-04-08 9 views
-1
私は(など、ノー連結、プッシュ、ポップ、シフト、置き換え、並べ替え、スプライス)機能に建てられた配列のいずれかを使用せずに2つの配列をマージする助けが必要

[JS]配列は、配列関数を使用せずにマージ

そして、私はこの点に着いたが、私は立ち往生している。

function addTwoArrays(arr1, arr2){ 
    var merge = [], p; 
    for(p = 0; p < arr1.length; p++){ 
     merge[arr1[p]] = true; 
    } 
    for(p = 0; p < arr2.length; p++){ 
     merge[arr2[p]] = true; 
    } 
    return Object.keys(merge); 
} 
window.alert(addTwoArrays([1,2,3,4],[4,3,2,1])); 

リターンは1,2,3,4である - の代わりに、1,2,3,4,4,3,2,1

+1

'merge'がありますオブジェクトではありません –

+0

解決策がarr1とarr2から文字列を作成してから2つの文字列を追加する場合は気になりますか? – Kobbe

+0

なぜ配列関数を使用しないのですか? – PHPglue

答えて

2

を - 単に開始インデックスとしてarr1.length取り、アレイに追加:

function addTwoArrays(arr1, arr2) { 
 
    let start = arr1.length; 
 
    for (let i = 0; i < arr2.length; i++) { 
 
    arr1[start++] = arr2[i]; 
 
    } 
 
    return arr1; 
 
} 
 

 
console.log(addTwoArrays([1, 2, 3, 4], [4, 3, 2, 1]));

+0

このアプローチの問題は、マージすると最初の配列がインプレースで変更されるということです。 – lazyvab

+1

@lazyvab:OPは "_マージが必要な_"と思われるので、どうしたらいいですか? – dandavis

0

キーはJSONオブジェクトでユニークです。したがって、Object.keys()は各要素の固有の出現を返します。 代わりに、この試してください:あなたは一度だけループする必要がある

function addTwoArrays(arr1, arr2){ 
    var merge = [], p, index = 0; 
    for(p = 0; p < arr1.length; p++){ 
     merge[index++] = arr1[p]; 
    } 
    for(p = 0; p < arr2.length; p++){ 
     merge[index++] = arr2[p]; 
    } 
    return merge; 
} 
window.alert(addTwoArrays([1,2,3,4],[4,3,2,1])); 
関連する問題