JavaScriptツール類(八):object対象
35028 ワード
Object
objectオブジェクト方法パッケージ
https://github.com/shiguang0116/sg-utils
シリーズ記事
JavaScriptツール類(一):util.js作成及びアップロードJavaScriptツール類(二):cookieキャッシュJavaScriptツール類(三):locastrageローカルストレージJavaScriptツール類(四):データタイプJavaScriptツール類(五):string文字列JavaScriptツール類(六):array配列JavaScriptツール類(8):object対象JavaScriptツール類(9):date日付JavaScriptツール類(10):base 64符号化、JavaScriptツール類(11):ブラウザ、モバイル端末タイプJavaScriptツール類(12):validateフォーム認証JavaScriptツール類(13):JsonデータフォーマットJavaScriptツール類:util.js用法例
objectオブジェクト方法パッケージ
u.object = {}
オブジェクトの属性セットを取得します./**
* @description
* @param {Object} obj
* @return {Array}
*/
u.object.keys = function(obj) {
if (u.isEmpty(obj)) return []
var ret = []
try {
ret = Object.keys(obj)
}
catch (e) {
for (var key in obj) {
ret.push(key)
}
}
return ret
}
オブジェクト属性の値のセットを取得します./**
*@description
* @param {Object} obj
* @return {Array}
*/
u.object.values = function(obj) {
if (u.isEmpty(obj)) return []
var ret = []
try {
ret = Object.values(obj)
}
catch (e) {
for (var key in obj) {
ret.push(obj[key])
}
}
return ret
}
オブジェクトを結合/**
* @description ( Object.assign() , 。 u.extend() )
* @param {Object} target
* @param arguments
*/
u.object.assign = function(target) {
if (!u.isObject(target)) return
try {
Object.assign.apply(window, arguments)
}
catch (e) {
for (var i = 1; i < arguments.length; i++) {
var nextObj = arguments[i]
if (u.isObject(nextObj)) {
for (var nextKey in nextObj) {
target[nextKey] = nextObj[nextKey]
}
}
}
}
}
オブジェクトの1つ(複数)の属性を選択します./**
* @description ( )
* @param {Object} obj
* @param {String Array} keys
* @return {Object}
*/
u.object.select = function(obj, keys) {
if (u.isEmpty(obj) || u.isEmpty(keys)) return {}
var ret = {}
if (!u.isArray(keys)) keys = [keys]
u.forEach(keys, function(i, key) {
ret[key] = obj[key]
})
return ret
}
属性名を変更/**
* @description
* @param {Object} obj
* @param {String} oldKey
* @param {String} newKey
* @param {Boolean} keepOld , false
*/
u.object.rename = function(obj, oldKey, newKey, keepOld) {
if (u.isEmpty(obj)) return
if (obj[oldKey]) {
obj[newKey] = obj[oldKey]
if (!keepOld) u.object.remove(obj, oldKey)
}
}
オブジェクトの属性値を取得します./**
* @description ( )
* @param {Object} obj
* @param {String} propertyName 'data.child.name'
* @param {Boolean} ignoreCase , false
*/
u.object.getValue = function(obj, propertyName, ignoreCase) {
var propertyValue = null
if (!obj) return propertyValue
if (u.isEmpty(propertyName)) return propertyValue
var pointIndex = propertyName.indexOf('.')
if (pointIndex > -1) {
obj = obj[propertyName.substring(0, pointIndex)]
return u.object.getValue(obj, propertyName.substring(pointIndex + 1), ignoreCase)
}
else {
u.forEach(obj, function(key, value) {
if (u.equal(key, propertyName, ignoreCase)) {
propertyValue = value
return false
}
})
}
return propertyValue
}
オブジェクトの整列/**
* @description
* @param {Object} paramObj
* @return {String}
*/
u.object.serialize = function(paramObj) {
var name, value, fullSubName, subName, subValue, innerObj
var ret = ''
for (name in paramObj) {
value = paramObj[name]
if (value instanceof Array) {
for (var i = 0; i < value.length; ++i) {
subValue = value[i]
fullSubName = name + '[' + i + ']'
innerObj = {}
innerObj[fullSubName] = subValue
ret += u.object.serialize(innerObj) + '&'
}
}
else if (value instanceof Object) {
for (subName in value) {
subValue = value[subName]
fullSubName = name + '[' + subName + ']'
innerObj = {}
innerObj[fullSubName] = subValue
ret += u.object.serialize(innerObj) + '&'
}
}
else if (value !== undefined && value !== null) { ret += encodeURIComponent(name) + '=' + encodeURIComponent(value) + '&' }
}
ret = ret.substring(0, ret.length - 1)
return ret
}
オブジェクトに指定された属性または値が空の属性(undefined,null,')を削除します./**
* @description (undefined, null, '')
* @param {Object} obj
* @param {String Array} keys ,
* @return {Object}
*/
u.object.remove = function(obj, keys) {
if (u.isEmpty(obj)) return obj
var ret = {}
var es6 = true
if (!u.isEmpty(keys)) {
if (!u.isArray(keys)) keys = [keys]
u.forEach(keys, function(i, key) {
try {
delete obj[key]
}
catch (e) {
es6 = false
return false
}
})
if (es6) return obj
else {
u.forEach(obj, function(key, value) {
if (keys.indexOf(key) === -1) {
ret[key] = value
}
})
return ret
}
}
else {
u.forEach(obj, function(key, value) {
var wrongful = (value === null || value === undefined || value === '')
try {
if (wrongful) delete obj[key]
}
catch (e) {
es6 = false
if (!wrongful) {
ret[key] = value
}
}
})
if (es6) return obj
else return ret
}
}
オブジェクトを空にする/**
* @description
* @param {Object} obj
* @param {Array} keys ,
* @return {Object}
*/
u.object.clear = function(obj, keys) {
if (u.isEmpty(obj)) return {}
if (keys) {
if (!u.isArray(keys)) keys = [keys]
u.forEach(keys, function(i, key) {
obj[key] = ''
})
}
else {
for (var key in obj) {
obj[key] = ''
}
}
return obj
}
ダウンロードnpm i sg-utils -S
GitHub住所(星にあげてください.)https://github.com/shiguang0116/sg-utils
シリーズ記事
JavaScriptツール類(一):util.js作成及びアップロードJavaScriptツール類(二):cookieキャッシュJavaScriptツール類(三):locastrageローカルストレージJavaScriptツール類(四):データタイプJavaScriptツール類(五):string文字列JavaScriptツール類(六):array配列JavaScriptツール類(8):object対象JavaScriptツール類(9):date日付JavaScriptツール類(10):base 64符号化、JavaScriptツール類(11):ブラウザ、モバイル端末タイプJavaScriptツール類(12):validateフォーム認証JavaScriptツール類(13):JsonデータフォーマットJavaScriptツール類:util.js用法例