この質問は、this questionと似ている可能性があります。数時間前に尋ねましたが、私が苦労していた問題は、思想。私は、2つのオブジェクトが同じプロパティと値のセットを持っていても、2つのオブジェクトがJavaScriptで同じであるとはみなされないという事実を認識していませんでした。複製オブジェクト用のオブジェクトの2つの配列を比較し、JavaScriptで重複していないときに押します
私はこのようなオブジェクトの2つの配列をJavaScriptに持っています。私が何をしたいか
var from = [
{city: "seoul", country: "korea"},
{city: "tokyo", country: "japan"},
{city: "beijing", country: "china"},
{city: "new york", country: "usa"}
];
var to = [
{city: "seoul", country: "korea"},
{city: "tokyo", country: "japan"},
{city: "toronto", country: "canada"}
];
は、オブジェクトのいずれかの場合、配列は「へ」のアレイ内にすでに存在すると、それはでない場合にのみ、「へ」の配列にオブジェクトをプッシュする「から」で確認することです"to"配列にない他のオブジェクトが "from"配列にあっても、 "from"配列から "to"配列にオブジェクトを1つだけ追加したいと考えています。言い換えれば、オブジェクトが「to」配列にプッシュされるとすぐにループから抜け出したいと思っています。
最後に、「to」配列をこのようにしたいと思います。
var target = {
{city: "seoul", country: "korea"},
{city: "tokyo", country: "japan"},
{city: "toronto", country: "canada"},
{city: "beijing", country: "china"}
};
ここで私がこの効果を達成するために考え出した機能です。
function ruthere (source, target) {
for (var i = 0; i < target.length; i++) {
for (var j = 0; j < source.length; j++) {
if (target[i].city == source[j].city) {
console.log("Already there");
} else {
target.push(source[j]);
i = target.length-1;
break;
}
}
}
}
これは私が望む結果を達成した限りですが、これはまだ私が望むことをしません。
*編集:オブジェクトの名前プロパティの値が同じかどうかを確認するだけです。 countryプロパティの値は同じである必要はありません。
サンプル・オブジェクトは、 "名前" プロパティを持っていない '(ターゲット[i]を.name'。おそらく、これは読みたい'(ターゲット[i]が.city' – Hamms
@ハムムズは申し訳ありませんでした。 – oosniss
また、 'break'は最も内側の' for'ループから抜け出すだけで、両方ではなく 'return'になります。 – Hamms