कल्पना कीजिए कि मेरे पास एक जेएस सरणी है:
var a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11];
मैं जो चाहता हूं, उस सरणी को एन छोटे सरणियों में विभाजित करना है। उदाहरण के लिए:
split_list_in_n(a, 2)
[[1, 2, 3, 4, 5, 6], [7, 8, 9, 10, 11]]
For N = 3:
[[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11]]
For N = 4:
[[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11]]
For N = 5:
[[1, 2, 3], [4, 5], [6, 7], [8, 9], [10, 11]]
अजगर के लिए, मेरे पास यह है:
def split_list_in_n(l, cols):
""" Split up a list in n lists evenly size chuncks """
start = 0
for i in xrange(cols):
stop = start + len(l[i::cols])
yield l[start:stop]
start = stop
जेएस के लिए, सबसे अच्छा सही समाधान जिसके साथ मैं आ सकता था एक पुनरावर्ती कार्य है, लेकिन मुझे यह पसंद नहीं है क्योंकि यह जटिल और बदसूरत है। यह आंतरिक फ़ंक्शन इस तरह की एक सरणी देता है [1, 2, 3, null, 4, 5, 6, null, 7, 8], और फिर मुझे इसे फिर से लूप करना होगा और इसे मैन्युअल रूप से विभाजित करना होगा। (मेरा पहला प्रयास इसे वापस कर रहा था: [१, २, ३, [४, ५, ६, [returning, returning, ९]]], और मैंने इसे अशक्त विभाजक के साथ करने का निर्णय लिया।
function split(array, cols) {
if (cols==1) return array;
var size = Math.ceil(array.length / cols);
return array.slice(0, size).concat([null]).concat(split(array.slice(size), cols-1));
}
यहाँ एक jsfiddle है कि: http://jsfiddle.net/uduhH/
आप वह कैसे करेंगें? धन्यवाद!