[JavaScript]对象数组常用处理方式 - 不完全整理

对象数组中查询属性为某个值的对象,使用Array.find()

返回数组中满足提供的测试函数的第一个元素的值。

const array1 = [5, 12, 8, 130, 44];
const found = array1.find(element => element > 10);
console.log(found);    // 12   只会返回第一个

 

两个对象数组根据某个属性相同合并对象数组。(前提是这个属性不会有重复的对象。可用于两张表搜索结果的合并,类似left join)

a.map(el => {
    el.address = b.find(item => item.uid == el.uid).address
})
console.log("变更后a:",a)

 

----------------------------------------------------------------------------------------

根据某个条件过滤对象数组中的元素,使用Array.filter()

const words = ['spray', 'limit', 'elite', 'exuberant', 'destruction', 'present'];
const result = words.filter(word => word.length > 6);

 

 

-----------------------------------------------------------------------------------------

Array.reduce()方法对数组中的每个元素按序执行一个提供的 reducer 函数,每一次运行 reducer 会将先前元素的计算结果作为参数传入,最后将其结果汇总为单个返回值。

第一次执行回调函数时,不存在“上一次的计算结果”。如果需要回调函数从数组索引为 0 的元素开始执行,则需要传递初始值。否则,数组索引为 0 的元素将被用作初始值,迭代器将从第二个元素开始执行(即从索引为 1 而不是 0 的位置开始)。

// 根据age分组, objectArray.reduce
let people = [
  { name: "Alice", age: 21 },
  { name: "Max", age: 20 },
  { name: "Jane", age: 20 },
];

function groupBy(objectArray, property) {
  return objectArray.reduce(function (acc, obj) {
    let key = obj[property];
    if (!acc[key]) {
      acc[key] = [];
    }
    acc[key].push(obj);
    return acc;
  }, {});
}

let groupedPeople = groupBy(people, "age");
console.log(groupedPeople)


// 结合扩展运算符--------------------------
function sum(...numbers){
    return numbers.reduce((preValue,currentValue)=>{
        return preValue + currentValue
    })
}
console.log(sum(1,2,3,4));

 

替换/更新数组中的某个对象

let tags = [
  { id: 1, name: "苹果" },
  { id: 2, name: "土豆" },
  { id: 3, name: "牛奶" }
]
let obj = { id: 2, name: "**"}
tags = tags.map((iTag) => iTag.id === obj.id ? obj : iTag)

console.log(JSON.stringify(tags))
// [{"id":1,"name":"苹果"},{"id":2,"name":"**"},{"id":3,"name":"牛奶"}]

 

挖坑:

join()

posted @ 2023-02-01 11:33  夕苜19  阅读(18)  评论(0编辑  收藏  举报