关于前端的对象,如何取值、数组对象转换,以及一些举例

记录一些知识和例子,巩固下基础,进阶下细节

在前端中,对象通常是指 JavaScript 对象,它是一种复合值类型,可以用于存储多个值(属性)。

对象是一组 键—值 对的集合。每个键都是一个字符串(或 ES6 中的 Symbol 类型),每个值可以是任何类型,包括数字、字符串、布尔值、null、undefined,甚至是另一个对象或数组

我们可以通过直接声明对象,或者通过构造函数来创建对象。

对象中的属性既可以使用点语法访问(如:person.name),也可以使用方括号语法访问(如:person['name']),其中前者在属性名符合标识符规范时更加常用。(注意,写对象需要对应一下数组的各种语法,有时候经常搞混

比如说:

let arr = { a:1,b:2 }//定义一个对象
打印arr.a  输出 1
打印arr['a']  输出1
然而当你数组这样写let array = [ a:1,b:2 ],就是一个错误的语法
但是我们可以这样写,因为数组是一种有序的数据结构
let array = [1, 2];


当arr = {}   array = []
arr[1] = '111'
打印出来的arr = {1: '111'}

array[1] = '111'
这样打印出来的array = [空白, '111']
因为这句代码的意思是将数组 array 的索引为 1 的元素的值设置为 '111'

例如,下面的代码定义了一个 person 对象,包含了 name、age、gender 三个属性:

const person = {
  name: 'Alice',
  age: 28,
  gender: 'female'
};

可以通过以下方式访问 person 对象中的属性值:

console.log(person.name) // 输出 "Alice"
console.log(person.age) // 输出 28
console.log(person['gender']) // 输出 "female"

也可以通过以下方式修改对象属性:

person.age = 29;
console.log(person.age) // 输出 29

在 JavaScript 中,对象是一种非常重要的基础类型,它可以用于存储和处理各种数据。在开发过程中,我们经常要使用对象来表示和操作复杂的数据结构,例如表单数据、API 响应等等。

data: {0: '数据0',1: '数据1',2: '数据2'}和data: {'0': '数据0','1': '数据1','2': '数据2'}的区别?

这两个表示方式在功能上是等价的,它们都是表示具有数字索引的对象。然而,它们在语法上稍有不同。

在第一个表示方式中,属性名没有使用引号,而是直接使用数字。这是因为在 JavaScript 中,对象的属性名可以是字符串或符号,但如果属性名是一个有效的标识符(如数字),则可以省略引号。因此,01 和 2 在这里被解释为数字属性名。

在第二个表示方式中,属性名被放在引号中,即使用了字符串作为属性名。这是因为在字符串中,数字可以是有效的字符,所以它们被解释为字符串属性名。

综上所述,这两种表示方式的区别在于属性名的类型,一个是数字类型,一个是字符串类型。在访问属性时,你可以使用 data[0] 或 data['0'] 来获取对应的值,两者都将返回 "数据0"。

对于data: {0: '成功导入1条数据', 3: '成功导入2条数据'}这样的对象,怎样提取键和值组成新的数组?

const data = {0: '成功导入1条数据', 3: '成功导入2条数据'};

const dataArray = Object.entries(data).map(([key, value]) => {
  return { id: key, message: value };
});

console.log(dataArray);

在这个示例代码中,我们使用 Object.entries() 方法获取对象 data 的键值对数组,得到 [['0', '成功导入1条数据'], ['3', '成功导入2条数据']]。然后,使用 Array.map() 方法对每个键值对进行转换,将其转换为 { id: key, message: value } 的形式,得到 [{id: '0', message: '成功导入1条数据'}, {id: '3', message: '成功导入2条数据'}]

在转换后的数组中,每个对象包含一个 id 属性和一个 message 属性,分别对应原对象的键和值。

data: {第一个: 1, 第二个: 2}怎样分别提取键和值的集合?

const keys = Object.keys(data);
const values = Object.values(data);

counts = {6: 1, 9: 2}单独取值:

        count[0] = undefined

        count[6] = 1

一个转换的列子:

{

        HSE管理安全: {1: 0, 2: 1},

        测试类型: {1: 3, 2: 0}

}

怎样变成

source:

[

        ['product', '一般', '重要'],

        ['HSE管理安全',0, 1],

        ['测试类型', 3, 0]

]的格式

答案:

const data = {
      HSE管理安全: { 1: 0, 2: 1 },
      测试类型: { 1: 3, 2: 0 },
    }

    const source = [['product', '一般', '重要']]

    for (const key in data) {
      const row = [key]

      for (const value of Object.values(data[key])) {
        row.push(value)
      }

      source.push(row)
    }

    console.log(source)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一个常见的 C++ 对象数组的应用是存储一组相同类型的对象,并对它们进行统一的操作。下面以一个简单的图形类为例,来举例说明。 假设我们有一个 Shape 类,它有一个纯虚函数 area(),用于求形状的面积。我们可以派生出 Circle、Rectangle 和 Triangle 类,分别表示圆形、矩形和三角形,它们分别实现了 area() 函数。 现在我们要存储一组不同的形状,并计算它们的总面积。我们可以定义一个 Shape 类型的数组,将不同的形状对象存储在其中,然后依次调用每个对象的 area() 函数,即可求出总面积。 下面是示例代码: ```cpp #include <iostream> using namespace std; class Shape { public: virtual double area() = 0; // 纯虚函数 }; class Circle : public Shape { public: Circle(double r) : radius(r) {} double area() { return 3.14 * radius * radius; } private: double radius; }; class Rectangle : public Shape { public: Rectangle(double l, double w) : length(l), width(w) {} double area() { return length * width; } private: double length, width; }; class Triangle : public Shape { public: Triangle(double b, double h) : base(b), height(h) {} double area() { return 0.5 * base * height; } private: double base, height; }; int main() { Shape *shapes[3]; // Shape 类型的数组,存储不同的形状对象 shapes[0] = new Circle(5); shapes[1] = new Rectangle(3, 4); shapes[2] = new Triangle(2, 6); double totalArea = 0; for (int i = 0; i < 3; i++) { totalArea += shapes[i]->area(); // 依次调用每个对象的 area() 函数 } cout << "Total area: " << totalArea << endl; for (int i = 0; i < 3; i++) { delete shapes[i]; // 释放对象内存 } return 0; } ``` 运行结果: ``` Total area: 39.14 ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值