复习一下JS中数组的运用。
截取数组:slice(startIndex,endIndex):
返回数组中指定开始位置倒结束位置的数组。不改变原数组内容。
另外还有一个重要的方法,插入、删除或替换数组元素方法:
splice(startIndex,howmany,element1~elementX):会修改原数组内容。参数含义分别为:“指定开始位置”,“删除多少个元素个数(可以为0)”,“添加到数组中的新元素(从startIndex下标开始)”。
相关运用
//题目一:"A[B]C[D]E[F]G"将其分为两个数组,分别是 ACEG 和 [B][D][F].
题目一
function QuestionFn1() {
var
str
=
"
A[B]C[D]E[F]G
"
;
var
oGetTwoArray
=
new
GetTwoArray();
//
取左右括号中的值
oGetTwoArray.GetLeftAndRightValue(str);
oGetTwoArray.GetNoLeftAndRightValue(str);
var
array1
=
oGetTwoArray.arrBetweenLeftRight;
var
array2
=
oGetTwoArray.arrNoLeftRight;
alert(array1.join( ""
));
alert(array2.join( ""
));
}
//
找到左右括号的index
function
GetTwoArray() {
this
.indexLeft
=
0
;
//
左括号索引
this
.indexRight
=
0
;
//
右括号索引
this
.arrBetweenLeftRight
=
[];
//
数组:存放左右括号中的字母
this
.arrNoLeftRight
=
[];
//
数组:存放没有括号包围的字母
//
取左右括号中的值
this
.GetLeftAndRightValue
=
function
(str) {
//
找到字符串中左括号的index
this
.indexLeft
=
str.indexOf(
'
[
'
);
this
.indexRight
=
str.indexOf(
'
]
'
);
//
取括号中的值(包含括号)
var
value
=
str.substring(
this
.indexLeft,
this
.indexRight
+
1
);
//
存放到数组中
this
.arrBetweenLeftRight.push(value);
//
剩下的str
var
restStr
=
str.substr(
this
.indexRight
+
1
);
//
如果还有左右括号则继续找
if
(restStr.indexOf(
'
[
'
)
!=
-
1
&&
restStr.indexOf(
'
]
'
)
!=
-
1
) {
this
.GetLeftAndRightValue(restStr);
}
}
//
取没有左右括号包围的值
this
.GetNoLeftAndRightValue
=
function
(str) {
//
找到字符串中左括号的index
this
.indexLeft
=
str.indexOf(
'
[
'
);
this
.indexRight
=
str.indexOf(
'
]
'
);
//
取没有左右括号包围的值(跟着右括号的第一个)
var
value
=
str.substring(
0
,
1
);
if
(value
!=
'
[
'
) {
//
因为第一个就有可能就是左括号
//
存放到数组中
this
.arrNoLeftRight.push(value);
}
//
剩下的str
var
restStr
=
str.substr(
this
.indexRight
+
1
);
//
如果还有左右括号则继续找
if
(restStr.indexOf(
'
[
'
)
!=
-
1
&&
restStr.indexOf(
'
]
'
)
!=
-
1
) {
this
.GetNoLeftAndRightValue(restStr);
}
//
剩下的没有左右括号了,就全部添数组里去
else
if
(restStr.indexOf(
'
[
'
)
==
-
1
&&
restStr.indexOf(
'
]
'
)
==
-
1
) {
this
.arrNoLeftRight.push(restStr);
}
}
}
//题目二:有两个有序整数数组,例如【1, 3, 5, 7, 9】和【2, 4, 6, 7, 8, 10, 13】,设计一个函数使两个数组合并,并且剔除掉两个数组里重复的元素.
题目二
function QuestionFn2() {
var arr1
=
[
1
,
3
,
5
,
7
,
9
];
var arr2
=
[
2
,
4
,
6
,
7
,
8
,
10
,
13
];
// 循环arr2中的每一个元素 去跟 arr1中的每一个元素 比较
for
(
var
j
=
0
; j
<
arr2.length; j
++
) {
for (
var
i
=
0
; i
<
arr1.length; i
++
) {
// 如果第二个数组中的数 小于数组一中的 某个数 则插到他前面
if
(arr2[j]
<
arr1[i]) {
arr1.splice(i, 0 , arr2[j]);
break ;
}
// 相等则剔除
else
if
(arr2[j]
==
arr1[i]) {
arr1.splice(i, 1 , arr2[j]);
break ;
}
// 如果 arr2[j] 比 数组1中的 最后一个数还大 则插到最后面去
else
if
(arr2[j]
>
arr1[arr1.length
-
1
]) {
arr1.push(arr2[j]);
}
}
}
alert(arr1.toString());
}
//题目三:给定一个整数数组,例如【2, 4, 5, 6, 7, 8】和一个数字,例如10,请设计一个函数找出两个元素,并且使这两个数的和为给定数字,并打印出来.
题目三
function QuestionFn3() {
var sum =
window.prompt(
"
请输入数组中两数相加的和
"
,
10
);
var arr =
[
2
,
4
,
5
,
6
,
7
,
8
];
var isFind =
false
;
//
记录是否存在
for ( var
i
=
0
; i
<
arr.length; i
++
) {
for ( var
j
=
i
+
1
; j
<
arr.length; j
++
) {
if (arr[j] +
arr[i]
==
sum) {
alert(arr[i] + "
+
"
+
arr[j]
+
"
=
"
+
sum);
isFind = true
;
}
}
}
// 如果没有找到
if (
!
isFind) {
alert( " 数组中没有两数相加等于 "
+
sum);
}
}