προβλημα με split και join

Κώδικας, πληροφορίες, ερωτήσεις και απαντήσεις σχετικές με την JavaScript.

Συντονιστές: Super-Moderators, WebDev Moderators

Απάντηση
sibas
Honorary Member
Δημοσιεύσεις: 1850
Εγγραφή: 21 Φεβ 2003 01:21
Τοποθεσία: Μια εδώ.. Μια εκεί.. Σήμερα είμαι εδώ!!!
Επικοινωνία:

προβλημα με split και join

Δημοσίευση από sibas » 19 Απρ 2017 12:11

Έχω το εξής θέμα

υπάρχουν 2 ul

Κώδικας: Επιλογή όλων

<ul id="u1">
<li data-id="1"></li>
<li data-id="5"></li>
</ul>

<ul id="u2"></ul>

από μια php function πέρνω κάποιες τιμές και τις περνάω σε javascript

Κώδικας: Επιλογή όλων

var us = '1,2,3,4,5';
με την findulli βρίσκω αν προ υπάρχουν συγκεκριμένα li από την ul#u1 με το data-id και τα περνάω στο δευτερο ul#u2

Κώδικας: Επιλογή όλων

var us = '1,2,3,4,5';
function findulli&#40;us&#41;&#123;
var nu = us.split&#40;','&#41;,
newul = &#40;'ul2'&#41;,
di = false,
new_arr = new Array&#40;&#41;;

	for&#40;var i = 0; i < nu.length; ++i&#41;&#123;
		
		di = $&#40;'ul'&#41;.find&#40;'li&#91;data-id='+nu&#91;i&#93;+'&#93;'&#41;;
			if&#40;di&#41;&#123;
			di.clone&#40;&#41;.prependTo&#40;newul&#41;;
			// πως να βρώ αυτά που λείπουν?
			new_arr.push&#40;nu&#91;i&#93;&#41;;
			
			&#125;
	&#125;
	console.log&#40;nu+ ' new_arr-> '+new_arr&#41;;
&#125;
findulli&#40;us&#41;;
όλα καλά και όλα ανθηρά μέχρι εδώ!

Το πρόβλημα είναι πως (σε αυτή την περίπτωση) μου λείπουν το 2,3,4
πως να βρώ αυτές τις τιμές που λείπουν και να τις περάσω σαν join ή array έξω από το loop?

κάποια ιδέα?

sibas
Honorary Member
Δημοσιεύσεις: 1850
Εγγραφή: 21 Φεβ 2003 01:21
Τοποθεσία: Μια εδώ.. Μια εκεί.. Σήμερα είμαι εδώ!!!
Επικοινωνία:

προβλημα με split και join

Δημοσίευση από sibas » 20 Απρ 2017 08:52

βρήκα λύση :D

Κώδικας: Επιλογή όλων

var us = '1,2,3,4,5';
function findulli&#40;us&#41;&#123;
var nu = us.split&#40;','&#41;,
newul = &#40;'ul2'&#41;,
di = false;

	for&#40;var i = 0; i < nu.length; ++i&#41;&#123;
		di = $&#40;'ul'&#41;.find&#40;'li&#91;data-id='+nu&#91;i&#93;+'&#93;'&#41;;
		if&#40;di&#41;&#123;
			di.clone&#40;&#41;.prependTo&#40;newul&#41;;
			var numid = di.attr&#40;'data-id'&#41;;
			if&#40;nu&#91;i&#93; == numid&#41; &#123;
				nu.splice&#40;i, 1&#41;;
			&#125;
		&#125;
	&#125;
	console.log&#40;'new nu-> '+nu&#41;;
&#125;
findulli&#40;us&#41;;
happy me :pint:

sibas
Honorary Member
Δημοσιεύσεις: 1850
Εγγραφή: 21 Φεβ 2003 01:21
Τοποθεσία: Μια εδώ.. Μια εκεί.. Σήμερα είμαι εδώ!!!
Επικοινωνία:

προβλημα με split και join

Δημοσίευση από sibas » 20 Απρ 2017 14:07

ποιος μπορει να βοηθήσει σε αυτό γιατι δεν το καταλαβαίνω :hammer:

Κώδικας: Επιλογή όλων

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" />
</head>
<body>
<p>copy li to another ul</p>

<ul id="u1">
<li data-id="2">data-id="2"</li>
</ul>

<ul id="u2"></ul>

<script src="//ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script>
const CHECK_ID = '5';
var us = '1,2,3,4,5';
//var us = '2,5';
function findulli&#40;us&#41;&#123;
var nu = us.split&#40;','&#41;,
newul = &#40;'ul#u2'&#41;;

   for&#40;var i = 0; i < nu.length; ++i&#41;&#123;
	   console.log&#40;'nu.length= '+nu.length+' - '+nu&#91;i&#93;&#41;;
		if&#40;nu&#91;i&#93; === CHECK_ID&#41;&#123;
			//console.log&#40;'chekid '+CHECK_ID+'-> nu&#91;i&#93;= '+nu&#91;i&#93;+ ' i= '+i&#41;;
			console.log&#40;'spliced first= '+nu&#91;i&#93;+' i='+i&#41;;
			nu.splice&#40;i, 1&#41;;
			
		&#125;else&#123;
			di = $&#40;'ul#u1'&#41;.find&#40;'li&#91;data-id='+nu&#91;i&#93;+'&#93;'&#41;;
			//di = $&#40;'ul#u1'&#41;.find&#40;'li&#91;data-id="6"&#93;'&#41;;
			numid = di.attr&#40;'data-id'&#41;;
			if&#40;typeof numid !== 'undefined'&#41;&#123;
				di.clone&#40;&#41;.prependTo&#40;newul&#41;;
				if&#40;nu&#91;i&#93; === numid&#41; &#123;
					nu.splice&#40;i, 1&#41;;
					console.log&#40;'spliced= '+nu&#91;i&#93;+' i='+i+ ' numid= '+numid&#41;;
				&#125;
			&#125;else&#123;
				 console.log&#40;'We not find DI'&#41;;
			&#125;
		&#125;
   &#125;
   console.log&#40;'new nu-> '+nu&#41;;
&#125;
findulli&#40;us&#41;;
</script>

</body>
</html>

για να δείτε το πρόβλημα comment/uncomment τα παρακάτω
var us = '1,2,3,4,5';
//var us = '2,5';
στο πρώτο λειτουργεί μια χαρά και αυτό είναι το ζητούμενο

logs
nu.length= 5 - 1
We not find DI
nu.length= 5 - 2
spliced= 3 i=1 numid= 2
nu.length= 4 - 4
We not find DI
nu.length= 4 - 5
spliced first= 5 i=3 // *
new nu-> 1,3,4 // το ζητούμενο είναι αυτό
στο δεύτερο
//var us = '1,2,3,4,5';
var us = '2,5';
logs
nu.length= 2 - 2
spliced= 5 i=0 numid= 2
new nu-> 5 // ΕΔΩ ΤΟ nu ΕΠΡΕΠΕ ΝΑ ΕΙΝΑΙ ΚΕΝΟ
δηλαδή το προβλημα είναι ότι το spliced first δεν εκτελέστηκε
i.e if(nu === CHECK_ID)

τι κάνω λάθος???

Απάντηση

Επιστροφή στο “JavaScript και Frameworks”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 1 επισκέπτης