js数组与对象

本文探讨了JavaScript中的数组和对象。介绍了数组的基本概念,包括其特点、索引和使用for循环实现数组API。同时,讲解了函数的作用和重要性,并提供了一些函数的构成元素。在对象部分,讨论了对象的键值对形式以及如何通过函数模拟数组的concat()方法。最后,给出了两个练习题,分别是将数组转换为对象和过滤对象中为空的字段。
摘要由CSDN通过智能技术生成

数组

  1. 什么是数组?
  • 索引从 0 开始,由相同数据类型组成的集合叫做数组。
  1. 为什么需要数组(数组解决了什么问题)?
  • 为了相同类型的数据统一管理问题。
  1. 数组有什么特点?
  • 有索引值;
  • 数组中的元素是相同的数据类型;
  • 是有序的,有长度(数组的长度表示元素的个数)
  • 数组元素可以为任意 js 数据类型

用 for 循环写出 数组API

  • 在数组的头部添加元素
//增
//向arr头部新增元素
//方式1  换值方式
var arr = [2, 6, 4, 7, 8, 10];
var name = "yyqx";
for (var i = arr.length; i >= 0; i--) {
  arr[i] = arr[i - 1]; //索引为(i-1)的元素换到索引为i的元素的位置上
}
arr[0] = name;
console.log(arr);
//方式2  原本的数组改变下标
var arr = [2, 6, 4, 7, 8, 10];
var newArr = [];
var name = "yyqx";
for (var i = 0; i < arr.length; i++) {
  var count = i + 1;
  newArr[count] = arr[i];
}
newArr[0] = name;
console.log(newArr);
  • 在数组的尾部添加元素
//向尾部加 "dundun"
var arr = [2, 2, 3, 4, 6, 1];
//普通方式
arr[arr.length] = "dundun";
console.log(arr);
//函数封装
function push(arr, name) {
  var arr1 = [];
  arr1[arr.length] = name;
  for (var i = 0; i < arr.length; i++) {
    arr1[i] = arr[i];
  }
  return arr1;
}
console.log(push(arr, "happy"));
//在数组尾部添加一个新的数组
  • 在数组的特定位置添加元素
//在数组的第三个位置新增元素 'dundun'
var arr = [2, 5, 3, 4, 6];
var name = "dundun";
var old = [arr[3], arr[4]];
arr[3] = name;
for (var i = 0; i < old.length; i++) {
  var count = 3 + i + 1;
  arr[count] = old[i];
}
console.log(arr);

函数

  • 什么是函数?
    带有一定功能,并且重复执行的
  • 为什么会有函数?(函数解决了哪些问题)
    为了解决按需执行的代码并且有规律的代码片段,重复编写,可维护性低的问题
  • 函数有哪些内容
  1. 形参:形参可以有 n 个 作用:接受实参,保存实参数据,相当于变量
  2. 实参:是具体的数据,可以为 js 任意类型,在函数调用时传入
  3. return 作用:将函数内部运算结果输出到函数外部,结束函数内部的语句

对象

  • 对象:用于表示不同意义的数据
  • 对象:key-value 键值对
  • key 都是字符串 相当于变量
  • value 任意类型的 js 数据

函数模拟数组 API-concat()

function concat() {
  //arguments
  //是:类数组,不能使用数据中的API
  //作用:接受所有的实参
  var res = [];
  console.log(arguments);
  //1:获取所有的实参(待合并数组)
  for (var i = 0; i < arguments.length; i++) {
    //arr接受每一个数组
    var arr = arguments[i];
    //2:将数组中的元素合到一块从尾部添加到res中
    for (var j = 0; j < arr.length; j++) {
      res.push(arr[j]);
    }
  }
  return res;
}
var arr_ = concat([1, 2, 35, 6, 3], [134], [63, 4, 2, 5]);
console.log(arr_);

练习题

  1. 将数组变为对象
    输入 var arr = [‘name’,‘fanzhen’,‘age’,12]
    输出:{name:‘fanzhen’,age:12}
//方式1
var arr = ["name", "fanzhen", "age", 12];
var obj = {};
for (var i = 0; i < arr.length; i++) {
  if (i % 2 == 0) {
    key = arr[i];
  } else {
    obj[key] = arr[i];
  }
}
console.log(obj);
//方式2 先把key 和 value 都先提出来
var arr = ["name", "fanzhen", "age", 12];
var keys = [];
var vals = [];
for (var i = 0; i < arr.length; i++) {
  if (i % 2 == 0) {
    keys.push(arr[i]);
  } else {
    vals.push(arr[i]);
  }
}
var obj = {};
for (var j = 0; j < keys.length; j++) {
  obj[keys[j]] = vals[j];
}
console.log(obj);
  • 封装一个将数组变为对象的函数
function arrObject(arr) {
  var obj = {};
  for (var i = 0; i < arr.length; i++) {
    if (i % 2 == 0) {
      key = arr[i];
    } else {
      obj[key] = arr[i];
    }
  }
  return obj;
}
console.log(arrObject(["name", "yyqx", "age", 21]));
  1. 过滤对象中为空字符的字段
    输入:{name:’’,age:12}
    输出:{age:12}
//方式1
var obj = {name:'',age:12};
for(var key in obj){
   if(obj[key] == ''){
    delete obj[key];
} 
}
console.log(obj);
//方式2
var obj = {name:'',age:12};
var res = {};
for(var key in obj){
   if(obj[key] !== ''){
    res[key] = obj[key];
} 
}
console.log(res);
  • 封装一个过滤对象中空字符的函数
function delEmpty(obj){
    for(var key in obj){
        if(obj[key] == ''){
            delete obj[key];
        }
    }
    return obj;
}
console.log(delEmpty({ name: "", age: 12 }))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值