【问题标题】:Is it possible to delete an entry from a JavaScript array?是否可以从 JavaScript 数组中删除条目?
【发布时间】:2023-03-19 12:36:01
【问题描述】:

是否可以从 JavaScript 数组中删除条目?使用删除运算符时,列表中的条目将替换为 null。

data = [{pid:30, pname:abc}, {pid:31, pname:def}, {pid:32, pname:zxc}]
delete data[1]

变成:

data = [{pid:30, pname:abc}, null, {pid:32, pname:zxc}]

仅供参考,我从 ajax 调用中将其作为 json 返回。返回值解析为var data = YAHOO.lang.JSON.parse(result.value || '[]')

【问题讨论】:

  • 你用什么语言工作?
  • 为了避免混淆,JSON 指的是 JSON 字符串化器返回的实际字符串值。看起来你实际上是在谈论一个 JavaScript 文字表达式,它看起来像 JSON,但实际上是 JS 代码。
  • 哦抱歉应该提到它的javascript。
  • 它的 javascript 和 json 是从对 php 的 ajax 调用返回的。返回的值被解析为 var data = YAHOO.lang.JSON.parse(result.value || '[]');

标签: javascript json


【解决方案1】:

排序()然后拼接()列表呢?

【讨论】:

  • 将所有的 null 单元格一起拼接起来。
【解决方案2】:

有许多库可以处理 JSON 内容的序列化和反序列化。其中许多库还允许您操作来自 JSON 的数据。

根据您使用的语言将决定您决定使用哪个库。

更多细节会有所帮助。

【讨论】:

  • 它的 javascript 和 json 是从对 php 的 ajax 调用返回的。返回的值被解析为 var data = YAHOO.lang.JSON.parse(result.value || '[]');
  • 仅供参考,我更新了问题以包含 OP 所在的特定 JavaScript 上下文。
【解决方案3】:

这是 JavaScript Array 类的问题。删除一个值总是会留下一个洞。您需要创建一个没有孔的新数组。这样的事情可能会有所帮助:

    Array.prototype.removeItem = function(index){
        var newArray = []
        for (var i =0; i < this.length; ++i){
            if (i==index||typeof this[i] === "undefined") continue;
            newArray.push(this[i]);
        }
        return newArray;
    }

    var a1 = [1,2,3,4,5]
    delete a1[1]
    alert(a1.join())
    //prints 1,,3,4,5

    var a2 = a1.removeItem(3)
    alert(a2.join())
    //prints 1,3,5 -- removed item 3 and previously "deleted" item 1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-24
    • 1970-01-01
    • 2014-05-01
    相关资源
    最近更新 更多