javascript如何获取数组和对象的值

时间:2017-07-28
JavaScript只有一种数据类型可以包含多个值,即对象Object。数组只是对象的一种特殊形式,本文章向大家介绍javascript如何获取数组和对象的属性值,需要的朋友可以参考一下。

JavaScript只有一种数据类型可以包含多个值:对象Object。数组是对象的一种特殊形式。

对象的形式如下:

{key: value, key: value, ...}

数组的形式如下

[value, value, ...]

数组和对象都有一个key -> value结构。数组中的键必须是数字,而任何字符串都可以用作对象中的键。键值对也称为“属性”。

可以使用点表示法访问对象属性

const value = obj.someProperty;

如果属性名称不是有效的JavaScript 标识符名称,或者属性名称是变量的值,我们可以使用[]访问对象的属性:

// the space is not a valid character in identifier names
const value = obj["some Property"];

// property name as variable
const name = "some Property";
const value = obj[name];

但对于数组,只能使用括号表示法访问数组元素:

const value = arr[5]; // arr.5 would be a syntax error

// property name / index as variable
const x = 5;
const value = arr[x];

 

示例:访问嵌套数据结构

嵌套数据结构是一个数组或对象,它引用其他数组或对象,即其值为数组或对象。可以通过连续应用点或括号符号来访问这些结构。

这是一个例子:

const data = {
    code: 42,
    items: [{
        id: 1,
        name: 'foo'
    }, {
        id: 2,
        name: 'bar'
    }]
};

假设我们要访问items的第二个name属性值

下面教大家如何一步一步的获取items的第二个name属性值

我们可以看到data是一个对象,因此我们可以使用点符号来访问它的属性。该items属性访问如下:

data.items

该值是一个数组,要访问其第二个元素,我们必须使用括号表示法:

data.items[1]   //注意index从0开始

该值是一个对象,我们再次使用点符号来访问name属性。所以我们最终得到:

const item_name = data.items[1].name;

或者,我们可以使用方括号[]获取,如下:

const item_name = data['items'][1]['name'];

在某些情况下,当我们访问对象属性值时返回undefined, 这说明对象/数组根本没有这个属性

const foo = {bar: {baz: 42}};
console.log(foo.baz); // undefined

使用console.log检查对象/数组的结构,您尝试访问的属性实际上在对象的第一层,正确代码如下:

console.log(foo.bar.baz); // 42

如果对象属性名称是动态的或者我们根本不知道它的属性名称,那我们该如何获取对象的值呢? 这时我们可以使用for in:

/**
 * 生成示例格式的列表,并且遍历:
 * aqiData = {
 *    "北京": 90,
 *    "上海": 40
 * };
 */
 //之前的赋值操作
var city = document.getElementById('aqi-city-input').value,
      num = document.getElementById('aqi-value-input').value;
//这里就不能用.看随后属性访问的比较
aqiData[city] = num;
//随后的遍历操作
for(var city in aqiData) {
    alert(city+":"+aqiData[city]);//北京:90,上海:40等
}