Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Сравнение в массиве массивов (https://javascript.ru/forum/misc/34100-sravnenie-v-massive-massivov.html)

dima*** 20.12.2012 14:23

Сравнение в массиве массивов
 
Сравнение в массиве массивов по 2 показателям.C помощью for вывести на экран.

Что-то не получается...:(

<script>

function uh(x){
	if(x[1]>x[2])
	{return 1}
	else
	{return 0}
}

a=[['Мама',4,2],['Папа',2,3]];
for(i=0;i<a.length;i++){	
document.write(a[i]+'<br>');
}

c=uh(a[0]);        //Без цикла получается
document.write(c+'<br>');
c1=uh(a[1]);
document.write(c1+'<br>');


c=new Array;     //Не получается
c=uh(a[i]);
for(i=0;i<c.length;i++){
document.write(c[i]+'<br>');
}

</script>

ruslan_mart 20.12.2012 14:44

dima***, что не совсем понял, тоесть сравнить значения первого массива в массиве и значение второго массива в массиве?

var a = [[1,2,3],[0,2,4]]
for(i=0;i<a[0].length;i++)
{
   if(a[0][i] == a[1][i])
   {
      alert('значение '+a[0][i]+' первого массива совпало со значением '+a[1][i]+' второго массива');
   }
}

dima*** 20.12.2012 14:58

Ruslan_xDD,нет.Нужно поочерёдно сравнить
a[0]- 1 и 2 элементы,
a[1]- 1 и 2 элементы.
Полученный результат вывести на экран с помощью цикла for/

ruslan_mart 20.12.2012 17:19

var a = [[1,2,3],[0,2,4]]
for(i=0;i<a[0].length;i++)
{
   for(j=0;j<a[1].length;j++)
   {
      if(a[0][i] == a[1][j])
      {
          alert(true);
      }
   }
}

Вот так что ли? :)

dima*** 20.12.2012 17:51

Ruslan_xDD-нет.:(
Там просто нужно сравнить 1 и 2 элементы,сначала в одном массиве,потом в другом.Затем с помощью for вывести.
Элементы из разных массивов сравнивать не нужно.

Ну никак неполучается.Целый день сижу...:help:

Deff 20.12.2012 19:23

Цитата:

Сообщение от dima***
Там просто нужно сравнить 1 и 2 элементы,сначала в одном массиве,потом в другом.Затем с помощью for вывести.
Элементы из разных массивов сравнивать не нужно.

Потому что объясняете XDD

Распишите построчно какие элементы с какими сравниваем
var a = [[1,2,3],[0,2,4]]
1. ? сравниваем 2 и 3 первого массива
2. ? сравниваем 2 и 4 второго массива

dima*** 20.12.2012 20:08

1.в нулевом массиве сравниваем 1 и 2 элемент между собой
2.в первом массиве также сравниваем 1 и 2 элемент массива.
3.Выводим на экран через for.

В скрипте(см. 1 топик) результат есть.Но нужно через for:help:

Deff 20.12.2012 20:25

dima***,
Индексация в массивах = с 0 или 1 ?

dima*** 20.12.2012 20:27

с 0.

dima*** 20.12.2012 20:33

Так наверное будет понятнее.
Смысл этой задачи добавить ещё один столбец к существующей таблице.
Вот весь скрипт:
<script  type="text/javascript">
function esli(x){
	if(x[2]>x[3])
	{return 1}
	else
	{return 0}
}


 
var a = "Мама мыла.Старший сын 4 2.Мама пришла 0 0.Щенок гавкал 6 8.";
    reg = /([А-Яа-я]+)\s([А-Яа-я]+)(\s(\d+)\s(\d+))?\./g,
    b = a.match(reg),
    c = new Array;
for (i = 0; i < b.length; i++) {
    c[i] = b[i].replace(reg, '$1,-,$2,$4,$5');
    c[i] = c[i].split(/,/);
}
for (i = 0; i < c.length; i++) {
    document.write(c[i] + '<br>');
}

/*m=new Array;
m=esli(c[i]);
for (i = 0; i<m.length; j++) {
    document.write(m[i]+'<br>');
}*/


var i, j;
document.write("<table id=T1 border=1>");
for (i = 0; i < c.length; i++) {
    document.write("<tr>");
    for (j = 0; j < c[i].length; j++) {
        document.write("<td>" + c[i][j] + "</td>")
    }
    document.write("</tr>")
}
document.write("</table>"+'<br>');

          </script>

Deff 20.12.2012 20:37

var a = [[1,2,2],[0,2,4]];

if(a[0][1]==a[0][2]) {alert("В Первом из массивов есть совпадение")}
else{alert("В Первом из массивов нет совпадения")}

if(a[1][1]==a[1][2]) {alert("В Втором из массивов есть совпадение")}
else{alert("В Втором из массивов нет совпадения")}

ruslan_mart 20.12.2012 20:49

var a = [[1,2,3],[0,2,4]];
a[0][1] == a[0][2] ? alert(true) : alert(false);
a[1][1] == a[1][2] ? alert(true) : alert(false);

И зачем тут "for"? :)

dima*** 20.12.2012 20:52

должно получиться в итоге:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Документ без названия</title>
</head>

<body>
<table border=1>
<tr>
<td>Мама</td><td>мыла</td><td></td><td></td><td>0</td>
</tr>
<tr>
<td>Старший</td><td>сын</td><td>4</td><td>2</td><td>1</td>
</tr>
<tr>
<td>Мама</td><td>пришла</td><td>0</td><td>0</td><td>0</td>
</tr>
<tr>
<td>Щенок</td><td>гавкал</td><td>6</td><td>8</td><td>0</td>
</tr>
</body>
<html>

dima*** 20.12.2012 20:57

Цитата:

Сообщение от Ruslan_xDD (Сообщение 222637)
И зачем тут "for"? :)

for обязательно ,а если таблица в 100 строк будет?

dima*** 20.12.2012 21:05

Решение вот,но оно без for
<script>

function uh(x){
	if(x[1]>x[2])
	{return 1}
	else
	{return 0}
}

a=[['Мама',4,2],['Папа',2,3]];
for(i=0;i<a.length;i++){	
document.write(a[i]+'<br>');
}

c0=uh(a[0]);        //Без цикла получается
document.write(c0+'<br>');
c1=uh(a[1]);
document.write(c1+'<br>');


</script>

ruslan_mart 20.12.2012 21:14

Чему тут через for выводиться, вот так что ли? :)
var a = [[1,2,3],[0,2,4]];
for(i=0;i<a.length;i++)
{
   (a[i][1] == a[i][2]) ? alert(true) : alert(false);
}

dima*** 20.12.2012 21:21

Сейчас посмотрю,вроде похоже...:)

dima*** 20.12.2012 21:29

Вроде,получилось!:dance:
А в таблицу потом как добавить?:(
Спасибо большое!

ruslan_mart 20.12.2012 22:19

<table id="MyTable"></table>

<script>
var a = [[1,2,3],[0,2,4]];
for(i=0;i<a.length;i++)
{
   if(a[i][0] == a[i][1])
   {
      var b = document.getElementById('MyTable');
      b.innerHTML = b.innerHTML + '<tr><td>'+a[i][0]+'</td><td>'+a[i][1]+'</td><tr>';
   }
}
</script>


Попробуйте так.

dima*** 20.12.2012 22:45

Спасибо,завтра попробую.А то сегодня уже каша в голове.

рони 21.12.2012 00:33

dima***,
Вариант ... смотреть после пробы )))
<!DOCTYPE HTML>

<html>

<head>
<meta charset="utf-8" />
  <title></title>
</head>

<body>
<script  type="text/javascript">
function esli(x){
	if(x[3]>x[4])
	{return 1}
	else
	{return 0}
}



var a = "Мама мыла.Старший сын 4 2.Мама пришла 0 0.Щенок гавкал 6 8.";
    reg = /([А-Яа-я]+)\s([А-Яа-я]+)(\s(\d+)\s(\d+))?\./g,
    b = a.match(reg),
    c = new Array;
for (i = 0; i < b.length; i++) {
    c[i] = b[i].replace(reg, '$1,-,$2,$4,$5');
    c[i] = c[i].split(/,/);
}
for (i = 0; i < c.length; i++) {
    document.write(c[i] + '<br>');
}


var i, j;
document.write("<table id=T1 border=1>");
for (i = 0; i < c.length; i++) {
    document.write("<tr>");
    for (j = 0; j < c[i].length; j++) {
        document.write("<td>" + c[i][j] + "</td>")
    }
    document.write("<td>" + +(c[i][3]>c[i][4]) + "</td></tr>")
    // document.write("<td>" + esli(c[i]) + "</td></tr>") //или так
}
document.write("</table>"+'<br>');

          </script>

</body>

</html>

dima*** 21.12.2012 09:43

Рони,как обычно,самое то!Спасибо огромное!:)

Ну,до чего же простое решение!!!Гениально!

<script>

function uh(x){
	if(x[1]>x[2])
	{return 1}
	else
	{return 0}
}

a=[['Мама',4,2],['Папа',2,3]];
for(i=0;i<a.length;i++){	
document.write(a[i]+'<br>');
}

/*c=uh(a[0]);        //Без цикла получается
document.write(c+'<br>');
c1=uh(a[1]);
document.write(c1+'<br>');
*/

c=new Array;     //Не получается
var i=0;
c=uh(a[i]);

for(i=0;i<c.length;i++){
document.write(c[i]+'<br>');
}

</script>


c=new Array; //Не получается
c=uh(a[i]);
for(i=0;i<c.length;i++){
document.write(c[i]+'<br>');
}


Почему этот кусок не работает?Совсем код неправильный?

dima*** 21.12.2012 09:49

Ruslan_xDD-спасибо большое!Твоё решение подошло для другого скрипта идеально!:)

рони 21.12.2012 11:29

dima***,
c=new Array; //обьявляем массив
c=uh(a[i]);//массив превращаем во что попало так как i на данный момент 2 и a[2] несуществует скрипт останавливается
for(i=0;i<c.length;i++){
document.write(c[i]+'<br>');
}

рабочий код
c=new Array;     
for(i=0;i<a.length;i++){
c[i]=uh(a[i]);
document.write(c[i]+'<br>');

рони 21.12.2012 11:39

Цитата:

Сообщение от dima***
document.write(c[i] +','+ esli(c[i])+'<br>');//Здесь не работает!!!!!!!!!!!!!!!!!!!!!!!!!

---- работает

dima*** 21.12.2012 11:46

Да,заработало.В Dreamweawere не работало,нашёл ошибку.

Рони,ну ты соображаешь!спасибо за помощь!

А если var i=0 поставить?

c=new Array; //обьявляем массив
var i=0;
c=uh(a[i]);//массив превращаем во что попало так как i на данный момент 2 и a[2] несуществует скрипт останавливается
for(i=0;i<c.length;i++){
document.write(c[i]+'<br>');
}

dima*** 21.12.2012 11:57

Оставлю решение на форуме.Может кому пригодится...В интернете ничего подобного не нашёл.

<script  type="text/javascript">
	function esli(x){
	    if(x[2]==x[3]&&x[2])
    {return 1}
	    else
	    {return 0}
	}
	 
	 
	 
	var a = "Мама мыла.Старший сын 4 2.Мама пришла 0 0.Щенок гавкал 6 8.";
	    reg = /([А-Яа-я]+)\s([А-Яа-я]+)(\s(\d+)\s(\d+))?\./g,
	    b = a.match(reg),
	    c = new Array;
	for (i = 0; i < b.length; i++) {
	    c[i] = b[i].replace(reg, '$1,$2,$4,$5');
	    c[i] = c[i].split(/,/);
	}
	for (i = 0; i < c.length; i++) {
	  
	 document.write(c[i] +','+ esli(c[i])+'<br>');
	}
	 
	 
	var i, j;
	document.write("<table id=T1 border=1>");
	for (i = 0; i < c.length; i++) {
	    document.write("<tr>");
	    for (j = 0; j < c[i].length; j++) {
	        document.write("<td>" + c[i][j] + "</td>")
	    }
	   document.write("<td>" + +(c[i][2]==c[i][3]) + "</td></tr>")
	   // document.write("<td>" + esli(c[i]) + "</td></tr>") //или так
	}
	document.write("</table>"+'<br>');
	 


	          </script>

dima*** 21.12.2012 12:23

Опять что-то не так!:help:

В массиве получается c[0][4]=1,
в таблице c[0][4]=0.

рони 21.12.2012 12:34

dima***,
оставьте свои координаты в личке -- незасоряйте форум

рони 21.12.2012 13:13

dima***,
разберитесь с 3 строкой
if(x[2]==x[3]&&x[2]!=null) здесь == а в 32 строке >


Часовой пояс GMT +3, время: 20:42.