PHP,Python,Golang,JavaScript 数组操作方式对比


数组是编程中常见的数据结构之一,它能够存储多个值,并提供了便捷的方式来对这些值进行操作。

不同的编程语言对数组的定义、写入、删除、读取和遍历方式有所不同。在本文中,我们将比较PHP,Python,Golang和JavaScript(ES6)中常见的数组操作方式,以帮助更好地理解和选择适合自己需求的方法。

1. 定义数组

  • PHP 定义数组(Array)
// 使用简化的中括号语法定义数组
$colors = ["red", "green", "blue"];
  • Python 定义列表(List)

    在Python中,列表(List)是用于表示动态数组的数据类型

colors = ["red", "green", "blue"]
  • Golang 定义切片(Slice)

    在Golang中,切片(Slice)是用于表示动态数组的数据类型

// 使用字面量创建切片
colors := []string{"red", "green", "blue"}

// 使用make()函数创建切片
// 创建一个长度为5的切片,容量为10
colors := make([]int, 5, 10)
  • JavaScript(ES6)定义数组(Array)

const colors = ["red", "green", "blue"];

2. 写入元素

  • PHP 向数组(Array)中写入元素
// 通过索引向数组中写入元素
$colors[3] = "yellow";
// 向数组末尾追加元素
$colors[] = "orange";
// 向数组末尾追加元素
array_push($colors, "pink", "yellow");
// 向数组开头插入元素
array_unshift($colors, "white", "black")
  • Python 向列表(List)中写入元素
# 通过索引向列表中写入元素
colors[3] = "yellow"
# 向列表末尾追加元素
colors.append("orange")
  • Golang 向切片(Slice)中写入元素
// 通过索引修改切片中的元素,超出切片长度时会抛异常
colors[1] = "yellow"
// 向切片末尾追加元素
colors = append(colors, "orange")
  • JavaScript(ES6)向数组(Array)中写入元素
// 向数组中写入元素
colors[3] = "yellow";
// 向数组末尾追加元素
colors.push("orange");

3. 删除元素

  • PHP 删除数组(Array)中的元素
// 删除指定索引位置的元素
unset($colors[1]);
// 删除数组中的最后一个元素,并返回被删除的元素
array_pop($colors);
// 删除数组中的第一个元素,并返回被删除的元素
array_shift($colors);
  • Python 删除列表(List)中的元素
# 删除指定索引位置的元素
del colors[1]
  • Golang 删除切片(Slice)中的元素
// 删除指定索引位置的元素
colors = append(colors[:1], colors[2:]...)
  • JavaScript(ES6)删除数组(Array)中的元素
// 删除指定索引位置的元素
colors.splice(1, 1);

4. 读取元素

  • PHP 通过索引读取数组(Array)中的元素
// 通过索引读取数组元素
echo $colors[0];
  • Python 通过索引读取列表(List)中的元素
# 通过索引读取列表元素
print(colors[0])
  • Golang 通过索引读取切片(Slice)中的元素
// 通过索引读取切片元素
fmt.Println(colors[0]) // 输出: red
  • JavaScript(ES6)通过索引读取数组(Array)中的元素
// 通过索引读取数组元素
console.log(colors[0]);

5. 遍历数组

  • PHP 遍历数组(Array)
// 使用for循环遍历数组
for ($i = 0; $i < count($colors); $i++) {
    echo $ . "-" . $colors[$i] . "<br>";
}

// 使用foreach循环遍历数组
foreach ($colors as $idx => $color) {
    echo $idx . "-" . $color . "<br>";
}
  • Python 遍历列表(List)
# 使用for循环遍历列表
for color in colors:
    print(color)

# 使用enumerate()函数遍历
for idx, color in enumerate(colors):
    print(f"Index: {idx}, Color: {color}")

# 使用列表推导式(List Comprehension)遍历
[print(color) for color in colors]
  • Golang 遍历切片(Slice)
// 使用for循环遍历切片
for i := 0; i < len(colors); i++ {
    fmt.Println(colors[i])
}

// 使用range关键字遍历切片
for idx, color := range colors {
    fmt.Println(idx)
    fmt.Println(color)
}
  • JavaScript(ES6)遍历数组(Array)
// 使用for循环遍历数组
for (let i = 0; i < colors.length; i++) {
    console.log(colors[i]);
}

// 使用forEach方法遍历数组
colors.forEach(color => {
    console.log(color);
});

// 使用map方法遍历数组
colors.map(color => {
    console.log(color);
});

// 使用for...of循环遍历
for (const color of colors) {
    console.log(color);
}

// 使用for...in循环遍历(不推荐)
for (const index in colors) {
    console.log(colors[index]);
}

// 使用entries()方法遍历
for (const [index, color] of colors.entries()) {
    console.log(`Index: ${index}, Color: ${color}`);
}
for...in循环虽然也可以遍历数组,但不推荐使用,因为它会遍历数组的所有可枚举属性,包括原型链上的属性,可能会导致意外的行为

总结

不同编程语言中的数组操作方式各有特点,但它们都提供了类似的功能,包括定义、写入、删除、读取和遍历数组。在选择数组操作方式时,应根据编程语言的语法特性、性能需求和个人偏好来进行选择。了解并熟练掌握各种语言的数组操作方式,将有助于提高编程效率和代码质量。


白菜1031
5.4k 声望1.6k 粉丝