javascript - 关联数组上的删除与拼接

标签 javascript arrays associative-array

如果我有一个 JS 关联数组,它是我收集到的一个真正的对象,我想删除一个元素,使用 delete myArr[someId] 会将元素设置为未定义,同时splice 根本不起作用...那么如果我想删除一个元素(而不是将其设置为 undefined),关联数组的替代方案是什么

最佳答案

js 中的术语一开始可能会令人困惑,所以让我们理清一下。

是的,在 js 中几乎所有东西都是对象。但是,数据类型存在差异。

数组可以类似用作关联数组,但它不同于对象字面量。

var x = []; //array
var y = {}; //object literal

数组就像一个列表。数组的键可以是数字索引或字符串。

var x = ['a','b']; // x[0] === 'a', x[1] === 'b';
var x = [];
    x['one'] = 'a';
    x['blah'] = 'b'; 

对象字面量就像字典。它们可以以类似的方式使用。

var x = { 0: 'a', 1: 'b' };
var x = { one: 'a', two: 'b' };

但是,这是您需要了解差异的地方。

您可以对象字面量一样使用数组,但不能像数组一样使用对象字面量。

数组具有自动的“长度”属性,它会根据数组中元素的总数自动递增和递减。你不会用对象文字得到这个。数组还可以获得所有其他特定于数组的方法,例如 shift、unshift、splice、pop、push 等。对象文字没有这些方法。

让我们谈谈删除以及在数组和对象字面量上发生的事情。

var x = ['a', 'b']; //["a", "b"]
delete x[0]; //[undefined, "b"]

var x = {0:'1', 1:'b'}// { 0:"1", 1:"b"}
delete x[0]; // { 1:"b" }

如果对数组的元素执行删除,数组的长度不会改变。保留元素索引并将值设置为'undefined';

相反,对对象字面量执行删除会从对象中删除键/值。

最后,如果你想从数组中删除一个元素。

var x = ['a', 'b']; 
x.splice(0,1); //modifies x. ['b']

因此,总而言之,对对象字面量使用 delete。在数组上使用拼接。

希望这对您有所帮助。

关于javascript - 关联数组上的删除与拼接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8173210/

相关文章:

arrays - 根据 Ruby 中的属性子集查找数组中的重复对象

javascript - Open Graph 标签和 Nuxt.js(产品?)的问题

javascript - 替换克罗地亚语变音符号

javascript - 如果没有 jQuery,我如何有选择地删除数组中存在的元素?

javascript - 在 JavaScript 中创建一些关联数组

php - 如何在 PHP 中获取关联数组中的前 n 个键?

Javascript 关联数组返回空/未定义,尽管已填充在函数内部

javascript - 这么多括号。我真的无法理解所有这些括号

javascript - 通过 ajax 请求某些内容 - 如何停止其他请求,直到该请求完成

javascript - 将二维数组中的列添加到另一个二维数组