मेरे पास नीचे के रूप में 2 बिंदु वस्तुएं हैं, कृपया ध्यान दें कि

  1. बिंदु 1 (पी 1, पी 2, पी 3 और पी 4) स्ट्रिंग प्रकार हैं लेकिन वे दशमलव बिंदु संख्याएं हैं।

  2. बिंदु 2 (पी 1, पी 2, पी 3 और पी 4) संख्याएं हैं।

  3. वस्तुओं में अन्य गुण भी हैं लेकिन मुझे उनकी समानता की तुलना करने की आवश्यकता नहीं है

  4. मैं बिंदु 1 (पी 1, पी 2, पी 3 और पी 4) के लिए समानता की तुलना कैसे कर सकता हूं === बिंदु 2 (पी 1, पी 2, पी 3 और पी 4) केवल

    const point1 = {
      id: 1234,
      p1: "1.000000",
      p2: undefined,
      p3: "1.0",
      p4: "1.0",
      p5: "somevale 1"
    };
    
    const point2 = {
      id: 3456,
      p1: 1,
      p2: undefined,
      p3: 1,
      p4: 1,
      p5: "somevalue 2"
    };
    
-2
Chamie 12 जुलाई 2021, 05:52

3 जवाब

सबसे बढ़िया उत्तर

कुंजी की एक सरणी परिभाषित करें जिसके लिए आप समानता की जांच करना चाहते हैं, फिर प्रत्येक कुंजी पर पुनरावृति करने के लिए उस सरणी पर .every() का उपयोग करें। प्रत्येक कुंजी के लिए, आप isNaN() का उपयोग करके जांच सकते हैं कि point1 से इसका मान संख्यात्मक है या नहीं, और यदि यह है, तो इसे यूनरी प्लस ऑपरेटर (+) का उपयोग करके एक संख्या में परिवर्तित करें। ), अन्यथा, आप इसे इसके मूल मान के रूप में छोड़ सकते हैं और इसकी तुलना point2 में संग्रहीत कुंजी के मान से कर सकते हैं। .every() के लिए कॉलबैक को true लौटाना होगा, ताकि आपकी सरणी में सभी कुंजियों के लिए pointsEqual true हो। , अन्यथा यह गलत होगा यदि दो चाबियों के बीच कोई मेल नहीं है:

const point1 = { id: 1234, p1: "1.000000", p2: undefined, p3: "1.0", p4: "1.0", p5: "somevale 1" };
const point2 = { id: 3456, p1: 1, p2: undefined, p3: 1, p4: 1, p5: "somevalue 2" };

const keys = ["p1", "p2", "p3", "p4"];
const pointsEqual = keys.every(
  key => (isNaN(point1[key]) ? point1[key] : +point1[key]) === point2[key]
);
console.log(pointsEqual); // true
1
Nick Parsons 12 जुलाई 2021, 09:10

यदि आप Javascript का उपयोग कर रहे हैं, तो आपको आइटम के माध्यम से लूप करना होगा और अलग-अलग तुलना करनी होगी। साथ ही, === टाइप चेक के लिए है। टाइप चेक छोड़ने के लिए == का प्रयोग करें।

0
Manny 12 जुलाई 2021, 03:00

आप 1 से 4 तक लूप से for लूप का उपयोग कर सकते हैं और "p" को इंडेक्स में इस तरह जोड़कर संबंधित प्रॉपर्टी प्राप्त कर सकते हैं:

const point1 = {
  id: 1234,
  p1: "1.000000",
  p2: undefined,
  p3: "1.0",
  p4: "1.0",
  p5: "somevale 1"
};
const point2 = {
  id: 3456,
  p1: 1,
  p2: undefined,
  p3: 1,
  p4: 1,
  p5: "somevalue 2"
};
var isEqual = true;
for(let i = 1; i < 5; i++){
  if(point1["p"+i] !== point2["p"+i]){
    isEqual = false;
  }
}
console.log(isEqual);

!= और !== के बीच अंतर नोट करें। (एक प्रकार की तुलना करता है, दूसरा नहीं करता है)

0
Spectric 12 जुलाई 2021, 03:08