[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()