繁体   English   中英

javascript对象属性/数组操作

[英]javascript object property/array manipulation

一些对象属性/数组操作。 是否有更好的语法来完成第2部分和第3部分?

// 1. create object and add element/arrays
var myObject = {};
myObject["123"] = { "A": 123, "B": 456 };  // add 
myObject["123"] = { "C": 123, "D": 456 };  // add more elements to array in element!
myObject["124"] = { "A": 123, "B": 456 };
myObject["125"] = { "A": 123, "B": 456 };
console.log(myObject);

// 2. delete first property in array
for (property in myObject){
        delete myObject[property];
        break;
    }

// 3. show first remaining property
for (property in myObject){
        x = property;
        console.log("first remaining property is " + x );
        break;
    }

我不确定为什么你只使用对象文字语法(JSON模仿对象文字声明)中途,但它也为你创建了一个bug。 你在第二个任务上覆盖了myObject [“123”]。

您可以更简单地将整个第1部分写为:

var myObject = {
    "123": {
        "A": 123,
        "B": 456,
        "C": 123,
        "D": 456
    },
    "124": {
        "A": 123,
        "B": 456
    },
    "125": {
        "A": 123,
        "B": 456
    }
}

第二和第三,没有“阵列中的第一个属性”这样的东西。 对于编写javascript的人来说,这是一个非常常见的错误(不仅仅是新人,而是多年来一直在写这篇文章的人)。

在任何情况下 ,对象的任何部分都不会出现 “第一”或“第二”或在对象中有任何顺序。 ECMA-262规范中清楚地概述了这一点。 浏览器供应商有时会适应这种行为,这就是为什么“它有效”的原因。

这是因为对象不是数组,也不是数组。 如果您希望事物按数组的顺序排列,则需要使用数组。 让我问你,文档对象中的“第一个”元素是什么? 显然这是一个愚蠢的问题,但它证明了这一点。 对象不维护顺序,这就是数组的作用。

所以使用一个数组。 方括号表示一个数组,该数组不将字符串作为键(对象可以这样做)。 为了使事情更加混乱,数组是对象,因此它们可以像对象一样 - 不要混淆它们并认为对象是数组。

myObject["123"] = { "C": 123, "D": 456 }; 

加入更多的元素到所述对象 (关联数组),它取代它们; 添加你必须写的元素:

myObject["123"].C =123;
myObject["123"].D = 456;

对于#2和#3,Javascript对象不保证按添加顺序返回属性; 为此你必须求助于一个数组,然后在将数据调整到不同数据结构的限制之后,你可以得到第一个元素:

myArray.shift()

您可以在支持它的浏览器中使用Object.keys()

console.log("first remaining property is " + Object.keys(myObject)[0] );

虽然我不确定这两种方法都能保证订单。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM