2009-12-11 12 views
7

मैं जावास्क्रिप्ट में दो सरणी के मान जोड़ने की कोशिश कर रहा हूं। [1,2,1] + [3,2,3,4]जावास्क्रिप्ट में, सरणी जोड़ने पर NaN से कैसे बचें

उत्तर 4,4,4,4 होना चाहिए, लेकिन मुझे या तो 4,4,4 या 4,4,4 मिल रहा है, NaN अगर मैं पहली सरणी लंबाई 4 को बदलता हूं।

मुझे पता है कि चौथी संख्या को पहले सरणी में होना आवश्यक है, लेकिन मैं यह नहीं समझ सकता कि जावास्क्रिप्ट को 0 बनाने के लिए कैसे बताना है, फिर यदि कोई नहीं है तो अपरिभाषित नंबर।

उत्तर

9

उपयोग isNaN सुनिश्चित करने के लिए मूल्य अंकगणितीय आपरेशनों में NaN का मूल्यांकन नहीं करता है।

यह सुरक्षित रूप से दो नंबर जोड़ना होगा इस तरह अगर उनमें से एक एक नंबर नहीं है, यह 0.

var c = (isNaN(a) ? 0 : a) + (isNaN(b) ? 0 : b); 

के साथ प्रतिस्थापित किया जाएगा कि आपको संदेह है कि या तो एक या बी नंबर के बजाय एक स्ट्रिंग हो सकता है (2 के बजाय), आपको इसे जोड़ने से पहले इसे संख्या में परिवर्तित करना होगा। ऐसा करने के लिए आप एक यूनरी + का उपयोग कर सकते हैं।

var c = (isNaN(a) ? 0 : +a) + (isNaN(b) ? 0 : +b); 
+0

Woot, एकल प्लस, भयानक संख्या में धर्मान्तरित! – akuhn

1
var a = [ 1, 2, 3, 4, 5 ]; 
var b = [ 2 , 3]; 
var c = []; 
var maxi = Math.max(a.length, b.length); 
for (var i = 0; i < maxi; i++) { 
    c.push((a[i] || 0) + (b[i] || 0)); 
} 
0
[1,2,3] + [3,2,1] 

उपरोक्त उदाहरण में, जावास्क्रिप्ट वैसे भी तार करने के लिए सरणियों परिवर्तित कर देती है परिणाम है:

1,2,33,2,1 
संबंधित मुद्दे