删除数组中指定索引的字段
const removeArrayItem = (arr, i) => {
return ([
...arr.slice(0, i),
...arr.slice(i + 1)
])
}
Demo:
var testArr = [1,2,3,4,5]
removeArrayItem(testArr, 2) // [1,2,4,5]
数组新增 Item
const addArrayItem = (arr, newData) => {
return arr.concat(newData)
}
demo:
addArrayItem([1,2,3,4,5], 6) // [1,2,3,4,5,6]
修改现有的数组
const changeArrayItem = (arr, i, newData) => {
return ([
...arr.slice(0, i),
newData,
...arr.slice(i + 1)
])
}
demo:
changeArrayItem([1,2,3,4,5], 2, 6) // [1, 2, 6, 4, 5]
数组里面的元素是否唯一
const isUniq = (arr) => {
return arr.every(i => arr.indexOf(i) === arr.lastIndexOf(i))
}
Demo:
isUniq([1,2,3,4,2]) // false
isUniq([1,2,3,4]) // true
将对象转化为array,同时过滤undefined
/**
* {a:1, b: undefined} => [{a:1}]
*/
const objectToArray = obj => Object.keys(obj).filter(k => {
return (typeof obj[k] !== 'undefined')
}).map(k => {
return {[k]: obj[k]}
})
Demo:
objectToArray({a:1, b: undefined}) // [{a:1}]
每隔 n 个值取值
const everyNth = (arr, nth) => arr.filter((e, i) => (i % nth === nth - 1))
Demo:
var demoArr = [1, 2, 3, 4, 5, 6, 7]
everyNth(demoArr, 2) // 2, 4, 6
传递一个包含多个对象的数组,其中对象按照 { label: '', value: '' } 处理,通过函数传入的 value 获取 label 值。
const getLabelByValue = (params, value) => {
if (value == null) return ''
if (!params || !Array.isArray(params)) return value
const item = params.find(item => String(item.value) === String(value))
return (item && item.label) || value
}
Demo:
var params = [
{ label: 'test1', value: 1 },
{ label: 'test2', value: 2 }
]
getLabelByValue(params, 1) // test1
getLabelByValue(params, 2) // test2
getLabelByValue(params, 'other') // other
传递一个包含多个对象的数组,其中对象按照 { label: '', value: '' } 处理, 通过传入的 value 获取数组里面对应的对象。
const getItemByValue = (params, value) => {
return params && params.find(item => String(item.value) === String(value))
}
Demo:
var params = [
{ label: 'test1', value: 1 },
{ label: 'test2', value: 2 }
]
getItemByValue(params, 1) // { label: 'test1', value: 1 }
getItemByValue(params, 3) // undefined