js一个快速提取所需字符串的方法

var obj ={
"dependencies": {
    "axios": "^0.27.2",
    "lodash": "^4.17.21",
    "nanoid": "^4.0.0",
    "normalize.css": "^8.0.1",
    "pinia": "^2.0.18",
    "qs": "^6.11.0",
    "vant": "^3.5.4",
    "vue": "^3.2.37",
    "vue-router": "^4.1.3"
  },
  "devDependencies": {
    "@vitejs/plugin-vue": "^3.0.3",
    "typescript": "^4.6.4",
    "vite": "^3.0.7",
    "vue-tsc": "^0.39.5"
  }
 }
 
 const iResult = {}
 for (var key in obj){
    var objItem = obj[key]
    console.log(objItem)
    for (var item in objItem)
    {
        console.log(item)
        console.log(iResult[key])
        !iResult[key] && (iResult[key] = [])// 这里的意思是不存在直接赋值为数组
        {
            iResult[key].push(item)
        }
    }
 }
 iResult
View Code

换es5:

const obj ={
"dependencies": {
    "axios": "^0.27.2",
    "lodash": "^4.17.21",
    "nanoid": "^4.0.0",
    "normalize.css": "^8.0.1",
    "pinia": "^2.0.18",
    "qs": "^6.11.0",
    "vant": "^3.5.4",
    "vue": "^3.2.37",
    "vue-router": "^4.1.3"
  },
  "devDependencies": {
    "@vitejs/plugin-vue": "^3.0.3",
    "typescript": "^4.6.4",
    "vite": "^3.0.7",
    "vue-tsc": "^0.39.5"
  }
 }
 
 const iResult = {}
 
 Object.keys(obj).map(key => {
    iResult[key] = Object.keys(obj[key])
 })
 
 iResult

ES5 引入了Object.keys方法,成员是参数对象自身的(不含继承的)所有可遍历( enumerable )属性的键名。

var data={a:1,b:2,c:9,d:4,e:5};
    console.log(Object.keys(data));//["a", "b", "c", "d", "e"]
    Object.keys(data).map((key,item)=>{ // data是数据源 最外层的,再遍历一次就是内层的了。
        console.log(key,data[key]);//key=>属性名    data[key]=>属性值
});

ECMAScript6以前,在JavaScript中实现“键/值”式存储可以使用Object来方便高效地完成,也就是使用对象属性作为键,再使用属性来引用值。但这种实现并非没有问题,为此TC39委员会专门为“键/值”存储定义了一个规范。

作为ES6的新增特性,Map是一种新的集合类型,为这门语言带来了真正的键/值存储机制。Map的大多特性都可以通过Object类型实现,但二者之间还是存在一些细微的差异。创建一个跟原数组相同的数组,每个值默认都是undefined

var array1 = [1,4,9,16];
const map1 = array1.map(x => x *2);
console.log(map1)

结果:

> Array [2,8,18,32]

 Array.join(' ')以空格来组合数组元素

--vue ...的用法

(一)操作数组

// 1.把数组中的元素孤立起来
let iArray = ['1', '2', '3'];
console.log(...iArray);
// 打印结果  1 2 3

      
// 2.在数组中添加元素
let iArray = ['1', '2', '3'];
console.log(['0', ...iArray, '4']);
// 打印结果  ["0", "1", "2", "3", "4"]

      
// 3.在数组中删除元素(取出一个元素)
// 与结构赋值的结合
// 如果将扩展运算符用于数组赋值,只能放在参数的最后一位,否则会报错。
const [first, ...rest] = [1, 2, 3, 4, 5];
console.log(first);  // 打印结果 1
console.log([...rest]);  // 打印结果 [2, 3, 4, 5]

const [one, ...last] = ["foo"];
console.log(one);  // 打印结果 foo
console.log([...last]);  // 打印结果 []

      
// 4.数组的合并
// ES6 的写法
var arr1 = [0, 1, 2];
var arr2 = [3, 4, 5];
arr1.push(...arr2);
console.log(arr1); // 打印结果 [0, 1, 2, 3, 4, 5]
// 推荐使用写法
console.log([...arr1, ...arr2]); // 打印结果 [0, 1, 2, 3, 4, 5]

// 5.将字符串转成数组
let iString = 'zhongguoren';
console.log([...iString]); // 打印结果 ["z", "h", "o", "n", "g", "g", "u", "o", "r", "e", "n"]

// 6.Map 和 Set 结构, Generator 函数
let map = new Map([
  [1, 'one'],
  [2, 'two'],
  [3, 'three'],
]);
let arr = [...map.keys()];
console.log(arr);
// 打印结果 [1, 2, 3]
 
// 7.当做参数传递和直接传数组的区别
iClick4() {
    let iArray = ['1', '2', '3'];
    //注意传的时候,就要三个点
    this.hanshu(...iArray);
},
hanshu(...iArray) {
    let ooo = 1;
    console.log(...iArray);
    // 打印结果 1 2 3
},
        
// 8.求出最大值
let iArray = [1, 2, 3, 99, 44, 66, 21, 85, 77];
let ooo = Math.max(...iArray);
console.log(ooo);
// 打印结果 99

// 9.如果对没有iterator接口的对象,使用扩展运算符,将会报错。
let obj = {
  name: 'zhh',
  age: '20'
}
console.log([...obj]);

操作对象

// 1.添加一个属性
let a = {age: 18, id: 10};
let c = {name: 'zhh', ...a};
console.log(c);    
// 打印结果  {name: "zhh", age: 18, id: 10}

// 2.修改一个属性
let a = {name: 'zhh', age: 18, id: 10};
let c = {...a, name: 'zhh1'};
console.log(c);    
// 打印结果  {name: "zhh1", age: 18, id: 10}

// 3.删除一个属性(拿出属性或者对象)
let a = {name: 'zhh', age: 18, id: 10};
let {name, ...c} = a;
console.log(name, c);    
// 打印结果 zhh {age: 18, id: 10}

 

posted @ 2022-08-17 20:43  vba是最好的语言  阅读(228)  评论(0编辑  收藏  举报