【问题标题】:Add new value to an existing array in JavaScript [duplicate]在JavaScript中向现有数组添加新值[重复]
【发布时间】:2011-01-01 02:10:18
【问题描述】:

在 PHP 中,我会这样做:

$array = array();
$array[] = "value1";
$array[] = "value2";
$array[] = "value3";

我如何在 JavaScript 中做同样的事情?

【问题讨论】:

  • jQuery 不是一种语言; JavaScript 是。
  • @ChrisB - 对于那些想知道的人来说,Javascript 是用来实现辉煌的 JQuery 的语言。
  • 只有我可以决定形容词对名词的归属。
  • 您可以使用函数进行动态求解:animationList[addkey()] function addkey() { var t=ac; ac++;控制台.log(t);返回 t; }

标签: javascript arrays


【解决方案1】:

你不需要 jQuery。使用常规 javascript

var arr = new Array();
// or var arr = [];
arr.push('value1');
arr.push('value2');

注意:在 javascript 中,您也可以将对象用作数组,但仍然可以访问数组原型。这使得对象表现得像一个数组:

var obj = new Object();
Array.prototype.push.call(obj, 'value');

将创建一个如下所示的对象:

{
    0: 'value',
    length: 1
}

您可以像访问普通数组 f.ex obj[0] 一样访问值。

【讨论】:

  • 这正是$()返回的“jQuery”对象的工作原理
  • 好吧,我确信有一个插件可以让你用 jQuery 做到这一点:P
  • [] 代替new Array(){} 代替new Object() 怎么样...
  • @J-P:当然,为什么不呢。我只是想在示例中尽可能清楚。
  • @Justin:实际上,它稍微快一点:mir.aculo.us/2009/12/24/extreme-javascript-performance-video(从第 21 张幻灯片开始)
【解决方案2】:

这与 jQuery 无关,只是一般的 JavaScript。

在 JavaScript 中创建数组:

var a = [];

或者:

var a = ['value1', 'value2', 'value3'];

在现有数组的末尾追加值:

a.push('value4');

要创建一个新数组,您应该使用[] 而不是new Array(),原因如下:

  • new Array(1, 2) 等价于[1, 2],但new Array(1) 等价于[1]。相反,后者更接近 [undefined],因为 Array 构造函数的单个整数参数指示所需的数组长度。
  • Array,就像任何其他内置的 JavaScript 类一样,不是关键字。因此,有人可以轻松地在您的代码中定义 Array 来做一些除了构造数组之外的事情。

【讨论】:

  • +1 表示 [] 而不是 new Array()
【解决方案3】:

Array 是一个 JavaScript 原生对象,你为什么不尝试使用它的 API 呢?当您切换到纯 JavaScript 或其他框架时,单独了解 API 将节省您的时间。

有许多不同的可能性,因此,请使用最能满足您需求的一种。

用值创建数组:

var array = ["value1", "value2", "value3"];

在末尾添加值

var array = [];
array.push("value1");
array.push("value2");
array.push("value3");

在开头添加值:

var array = [];
array.unshift("value1");
array.unshift("value2");
array.unshift("value3");

在某个索引处添加值:

var array = [];
array[index] = "value1";

或使用拼接

array.splice(index, 0, "value1", "value2", "value3");

选择你需要的。

【讨论】:

  • 带索引的那个对我不起作用。我在地图函数中使用它 $('select[id^="filter_"]').map(function () { var name = $(this).prop('name'); filters[name] = $ (this).val();
【解决方案4】:

有几种方法:

实例化数组:

var arr;

arr = new Array(); // empty array

// ---

arr = [];          // empty array

// ---

arr = new Array(3);
alert(arr.length);  // 3
alert(arr[0]); // undefined

// ---

arr = [3];
alert(arr.length);  // 1
alert(arr[0]); // 3

推入数组:

arr = [3];     // arr == [3]
arr[1] = 4;    // arr == [3, 4]
arr[2] = 5;    // arr == [3, 4, 5]
arr[4] = 7;    // arr == [3, 4, 5, undefined, 7]

// ---

arr = [3];
arr.push(4);        // arr == [3, 4]
arr.push(5);        // arr == [3, 4, 5]
arr.push(6, 7, 8);  // arr == [3, 4, 5, 6, 7, 8]

使用.push() 是添加到数组中的更好方法,因为您不需要知道已有多少项,并且可以在一次函数调用中添加许多项。

【讨论】:

    【解决方案5】:

    您可以使用.push() 方法(这是标准的JavaScript)

    例如

    var primates = new Array();
    primates.push('monkey');
    primates.push('chimp');
    

    【讨论】:

      【解决方案6】:

      确实,您必须在使用 array.push() 命令行之后立即初始化您的数组。

      var array = new Array();
      array.push("first value");
      array.push("second value");
      

      【讨论】:

        【解决方案7】:
        array = ["value1", "value2", "value3"]
        

        与其说是 jquery,不如说是 javascript

        【讨论】:

        • 这不是向数组添加任何值,而是创建一个包含一些值的数组。
        • 我不会对此投反对票,但感谢您至少解释了您的意见
        【解决方案8】:

        jQuery 是 JavaScript 的抽象。将 jQuery 视为 JavaScript 的子集,旨在与 DOM 一起工作。话虽如此;有将项目添加到集合的功能。不过,我会在你的情况下使用基本的 JavaScript:

        var array;
        
        array[0] = "value1";
        array[1] = "value2";
        array[2] = "value3";
        

        ... 或者:

        var array = ["value1", "value2", "value3"];
        

        ... 或者:

        var array = [];
        
        array.push("value1");
        array.push("value2");
        array.push("value3");
        

        【讨论】:

        • 我称之为“框架”……它也不是一个子集。
        • 您应该在第一个示例中将array 变量初始化为Array 对象,否则它将是undefined,您不能在其上调用push
        • @Ionut G. Stan:我正在通过 var array = []; 初始化数组
        • @Mark:我将 jQuery 称为库。它是这样宣传的,而不是作为一个框架。
        • @roosteronacid,我的意思是第一个例子。我不知道push 的观察是如何在我之前的评论中滑落的。我以某种方式混合了第一个和第三个示例。
        猜你喜欢
        • 1970-01-01
        • 2023-02-22
        • 1970-01-01
        • 1970-01-01
        • 2012-08-21
        • 2017-09-16
        • 2014-11-23
        • 1970-01-01
        • 2021-11-09
        相关资源
        最近更新 更多