1/* 2 * Copyright (c) 2023 Huawei Device Co., Ltd. 3 * Licensed under the Apache License, Version 2.0 (the "License"); 4 * you may not use this file except in compliance with the License. 5 * You may obtain a copy of the License at 6 * 7 * http://www.apache.org/licenses/LICENSE-2.0 8 * 9 * Unless required by applicable law or agreed to in writing, software 10 * distributed under the License is distributed on an "AS IS" BASIS, 11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 * See the License for the specific language governing permissions and 13 * limitations under the License. 14 */ 15const array1 = ['a', 'b', 'c']; 16const array2 = ['d', 'e', 'f']; 17const array3 = array1.concat(array2); 18print(array3); 19 20const letters = ["a", "b", "c"]; 21const numbers = [1, 2, 3]; 22 23const alphaNumeric = letters.concat(numbers); 24print(alphaNumeric); 25 26const num1 = [1, 2, 3]; 27const num2 = [4, 5, 6]; 28const num3 = [7, 8, 9]; 29 30const numbers1 = num1.concat(num2, num3); 31 32print(numbers1); 33 34 35const letters1 = ["a", "b", "c"]; 36 37const alphaNumeric1 = letters1.concat(1, [2, 3]); 38 39print(alphaNumeric1); 40 41const num11 = [[1]]; 42const num22 = [2, [3]]; 43 44const numbers2 = num1.concat(num22); 45 46print(numbers2); 47// [[1], 2, [3]] 48 49num11[0].push(4); 50 51print(numbers2); 52 53print([1, , 3].concat([4, 5])); // [1, empty, 3, 4, 5] 54print([1, 2].concat([3, , 5])); // [1, 2, 3, empty, 5] 55 56const emptyArr = []; 57print(emptyArr.concat([]).length); 58 59/* 60 * @tc.name:Array concat1 61 * @tc.desc:test long Array Concat long Array and change proto 62 * @tc.type: FUNC 63 */ 64{ 65 let arr1 = new Array(2000); 66 arr1[0] = 1; 67 arr1[1] = 1; 68 let arr2 = new Array(2000); 69 arr2.__proto__ = arr1; 70 arr2[1] = 3; 71 arr2[2] = 2; 72 arr2[3] = "ab"; 73 arr2[4] = 1; 74 let arr3 = new Array(2000); 75 let arr4 = arr3.concat(arr2); 76 print(arr4[2000], arr4[2001], arr4[2002], arr4[2003], arr4[2004]); 77} 78 79/* 80 * @tc.name:Array concat2 81 * @tc.desc:test long Array Concat short Array and change proto 82 * @tc.type: FUNC 83 */ 84{ 85 let arr1 = new Array(10); 86 arr1[0] = 1; 87 arr1[1] = 1; 88 let arr2 = new Array(10); 89 arr2.__proto__ = arr1; 90 arr2[1] = 3; 91 arr2[2] = 2; 92 arr2[3] = "ab"; 93 arr2[4] = 1; 94 let arr3 = new Array(2000); 95 let arr4 = arr3.concat(arr2); 96 print(arr4[2000], arr4[2001], arr4[2002], arr4[2003], arr4[2004]); 97} 98 99/* 100 * @tc.name:Array concat3 101 * @tc.desc:test short Array Concat long Array and change proto 102 * @tc.type: FUNC 103 */ 104{ 105 let arr1 = new Array(2000); 106 arr1[0] = 1; 107 arr1[1] = 1; 108 let arr2 = new Array(2000); 109 arr2.__proto__ = arr1; 110 arr2[1] = 3; 111 arr2[2] = 2; 112 arr2[3] = "ab"; 113 arr2[4] = 1; 114 let arr3 = new Array(10); 115 let arr4 = arr3.concat(arr2); 116 print(arr4[10], arr4[11], arr4[12], arr4[13], arr4[14]); 117} 118 119/* 120 * @tc.name:Array concat4 121 * @tc.desc:test long Array Concat long Array 122 * @tc.type: FUNC 123 */ 124{ 125 let arr2 = new Array(2000); 126 arr2[1] = 3; 127 arr2[2] = 2; 128 arr2[3] = "ab"; 129 arr2[4] = 1; 130 let arr3 = new Array(2000); 131 let arr4 = arr3.concat(arr2); 132 print(arr4[2000], arr4[2001], arr4[2002], arr4[2003], arr4[2004]); 133} 134 135/* 136 * @tc.name:Array concat5 137 * @tc.desc:test long Array Concat short Array 138 * @tc.type: FUNC 139 */ 140{ 141 let arr2 = new Array(10); 142 arr2[1] = 3; 143 arr2[2] = 2; 144 arr2[3] = "ab"; 145 arr2[4] = 1; 146 let arr3 = new Array(2000); 147 let arr4 = arr3.concat(arr2); 148 print(arr4[2000], arr4[2001], arr4[2002], arr4[2003], arr4[2004]); 149} 150 151/* 152 * @tc.name:Array concat6 153 * @tc.desc:test short Array Concat long Array 154 * @tc.type: FUNC 155 */ 156{ 157 let arr2 = new Array(2000); 158 arr2[1] = 3; 159 arr2[2] = 2; 160 arr2[3] = "ab"; 161 arr2[4] = 1; 162 let arr3 = new Array(10); 163 let arr4 = arr3.concat(arr2); 164 print(arr4[10], arr4[11], arr4[12], arr4[13], arr4[14]); 165} 166 167/* 168 * @tc.name:Array concat7 169 * @tc.desc:test long Array Concat long Array change origin prototype 170 * @tc.type: FUNC 171 */ 172{ 173 let arr2 = new Array(2000); 174 arr2.__proto__[0] = "??"; 175 arr2[1] = 3; 176 arr2[2] = 2; 177 arr2[3] = "ab"; 178 arr2[4] = 1; 179 let arr3 = new Array(2000); 180 let arr4 = arr3.concat(arr2); 181 print(arr4[0], arr4[2000], arr4[2001], arr4[2002], arr4[2003], arr4[2004]); 182} 183 184print("test arrayconcat success!"); 185 186print("proxy defineproperty success!"); 187const v1 = [1, 2, "j", 9999, , 23]; 188const v2 = ["sss", 2, "j", , , ,"test"]; 189print(v1.concat(v2)); 190 191let v3 = new Array(); 192v3.push('foo'); 193var v4 = ['bar']; 194var v5 = v3.concat(v4); 195print(v5);