日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

javascript - 如何將變量做為一個對象的key,push進一個數組?

瀏覽:204日期:2023-02-26 11:47:59

問題描述

a,b 的key都是相等的

diffObject(a, b) { let before = [], after = [] Object.keys(a).forEach(key => {if (a[key] !== b[key]) { before.push({ ??? }) // 這里應該怎么寫,{key: a[key]},但key不能是變量啊 after.push({ ??? })} }) return [before, after]}

或者有什么更好,更效率,更牛逼的的辦法嗎?

我要達到的效果是這樣的

const ob1 = { name: ’辣條’, color: ’綠色’, length: 10,}const ob2 = { name: ’辣條’, color: ’黃色’, length: 12,}const diff = diffObject(ob1, ob2)console.log(’diff[0]:’, diff[0])console.log(’diff[1]:’, diff[1])// diff[0]: [{color: ’綠色’}, {length: 10,}]// diff[1]: [{color: ’黃色’}, {length: 12,}]

這個問題的根本就是,在聲明一個對象時,如何把變量作為一個key。

問題解答

回答1:

ES6 允許字面量定義對象時,用表達式作為對象的屬性名

var lastWord = ’last word’;var a = { ’first word’: ’hello’, [lastWord]: ’world’};a[’first word’] // 'hello'a[lastWord] // 'world'a[’last word’] // 'world'回答2:修改了問題描述之后的答案

這個問題的根本就是,在聲明一個對象時,如何把變量作為一個key

如果變量是字符串或者數字

var o = {}; var a = ’aaa’; o[a] = ’用變量的值做 key’; console.log(o); 如果變量是對象

那就要用 ES6 的 Map 了

看代碼 很容易理解,是上一種方法的超集

var key = { val: ’我是對象 作為key’ }; // 初始化一個 m 類比 s = new Object(); var m = new Map(); m.set(key, ’被key射中(作為值’); ScreenShot

javascript - 如何將變量做為一個對象的key,push進一個數組?

新的寫法

const ob1 = { name: ’辣條’, color: ’綠色’, length: 10,}const ob2 = { name: ’辣條’, color: ’黃色’, length: 12,}const diff = diffObject(ob1, ob2)console.log(’diff[0]:’, diff[0])console.log(’diff[1]:’, diff[1])// diff[0]: [{color: ’綠色’}, {length: 10,}]// diff[1]: [{color: ’黃色’}, {length: 12,}]

利用 reduce

var diffObj = (a, b) => ( Object.keys(a).reduce((acc, key) => {if (a[key] !== b[key]){ let temp = {}; temp[key] = a[key]; acc[0].push(temp); temp = {}; temp[key] = b[key]; acc[1].push(temp); return acc; } else { return acc; } }, [[], []]));ScreenShot

javascript - 如何將變量做為一個對象的key,push進一個數組?

修改之前

diffObject(a, b) { let before = [], after = [] Object.keys(a).forEach(key => {if (a[key] !== b[key]) { before.push({ ??? }) // 這里應該怎么寫,{key: a[key]},但key不能是變量啊 after.push({ ??? })} }) return [before, after]}實現

額。??戳死暇脝栴}描述 也不是很清楚你想要做什么

姑且根據函數名和 before after 這些來猜,你是想要把 a 對象 和 b 對象不同的屬性和值分別放進 before 和 after 嗎? 如果是 可以看看下面代碼

var diffObj = (a, b) => { let keys = [] , vals = []; Object.keys(a).forEach(key => {if (a[key] !== b[key]){ keys.push(key); vals.push({a: a[key],b: b[key] });} }); return [keys, vals]; }var xiaoMing = { name: ’小明’, area: ’sz’, school: ’●0●’, age: 11 }var xiaoHong = { name: ’小紅’, area: ’gz’, school: ’(┬_┬)’, age: 11 }var diffs = diffObj(xiaoMing, xiaoHong); diffs[0].forEach((key, idx) => { console.group(’Diff: ’); console.log(’key:’, key, ’val:’, diffs[1][idx]); console.groupEnd(); })ScreenShot

javascript - 如何將變量做為一個對象的key,push進一個數組?

回答3:

實際上你的問題可歸結為這樣的問題:

function(value, key) { ret.push({key: value});}

key會被解析成字符串'key',期望是變量key 例當key='abc',value='123'上述實際變成{'key':'123'} 應該是{'abc':'123'}最直接的答案是 var o = {}; o[key] = value; ret.push(o); 但是有沒有更簡潔的方法?

以下是討論結果

@240 var a={},b=a[key]=value,c=ret.push(a);@hotor var c;ret.push((c={},c[a]=b,c));@Gaubee ret.push(eval('({'+key+':''+value+''})'));@hotor function(a,b,c){ret.push((c={},c[a]=b,c));}@240 ret[ret.push({})-1][key]=value;@Gaubee (ret[ret.length] = {})[key] = value;

注:以上答案是按時間先后順序列出,均沒有完整試過,大家使用前請謹慎測試,主要是要學習到其中的思想。對于具體選用哪個解法 希望根據 簡潔 性能和 可讀性去權衡 仁者見仁

是在一個QQ群里討論的總結,我只是搬運工。

回答4:

ES6支持對象屬性為變量,的寫法:

var a = ’x’var b = ’y’var obj = { [a]: ’this is x’, [b]: ’this is y’,}console.log(obj)

在你的push參數中,使用這種寫法就可以了。

標簽: JavaScript
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
六月婷婷一区| 欧美日本不卡| 国产91在线精品| 国产高清视频一区二区| 国产精品传媒麻豆hd| 国产欧美日韩综合一区在线播放| 日韩精品视频中文字幕| 亚洲丝袜美腿一区| 免费不卡在线视频| 亚洲美女91| 欧美日韩18| 国产精品流白浆在线观看| 91九色综合| 国产亚洲一卡2卡3卡4卡新区| 欧美日韩夜夜| 久久av日韩| 亚洲黄色中文字幕| 日韩电影免费在线观看| 在线成人动漫av| 国产模特精品视频久久久久| 久热综合在线亚洲精品| 亚洲+小说+欧美+激情+另类| 国产精品成人a在线观看| 国产成人精品亚洲日本在线观看| 婷婷综合社区| 日韩av中文字幕一区二区 | 综合欧美精品| 欧美天堂一区| 高潮一区二区| 亚洲欧美视频一区二区三区| 欧美在线看片| 蜜臀久久精品| 石原莉奈在线亚洲二区| 国产毛片精品久久| 欧美激情国产在线| 精品国模一区二区三区| 美女国产一区| 久久影院资源站| 亚洲美女久久精品| 日韩专区欧美专区| 精品一区二区三区亚洲| 蜜臀av免费一区二区三区| 日本三级亚洲精品| 色老板在线视频一区二区| 免费观看日韩电影| 加勒比视频一区| 99在线精品免费视频九九视| 国产伦精品一区二区三区千人斩 | 亚洲美女91| 精品国产乱码| 亚洲在线网站| 精品国产精品国产偷麻豆| 欧美大黑bbbbbbbbb在线| 91欧美极品| 视频一区中文| 久久精品99久久久| 香蕉人人精品| 免费在线成人| 热久久免费视频| 中文在线а√天堂| 日本少妇精品亚洲第一区| 久久久久久久久丰满| 久久国内精品自在自线400部| 91精品一区二区三区综合在线爱 | 亚洲影院天堂中文av色| 国产成人精品亚洲线观看| 免费成人性网站| 久久精品动漫| 久久av偷拍| 中文字幕日韩亚洲| 91精品国产福利在线观看麻豆| 国产日韩欧美一区二区三区 | 欧美激情网址| 奶水喷射视频一区| 日韩欧美二区| 欧美国产日本| 亚洲欧美在线专区| 国产精品88久久久久久| 成人在线黄色| 国产精品一页| 亚洲18在线| 亚洲欧洲一区| 在线中文字幕播放| 国产精品第一国产精品| 日韩综合一区二区| 欧美精品自拍| 成人在线网站| 超碰成人av| 国产精品99精品一区二区三区∴ | 亚洲在线网站| 久久在线视频免费观看| 在线人成日本视频| 美女性感视频久久| 日韩精品成人在线观看| 亚洲欧美日韩视频二区| 日韩久久精品网| 国产一区二区三区不卡视频网站 | 热久久免费视频| 久久久久国产精品一区三寸| 精品中文字幕一区二区三区四区| 日韩av成人高清| 亚洲乱码久久| 中文一区一区三区免费在线观 | 精品一二三区| 日本a口亚洲| 亚洲欧洲日韩精品在线| 亚洲一级在线| 午夜在线视频一区二区区别| 欧美日韩国产欧| 欧美不卡高清| 久久久久国产| 婷婷成人综合| 偷拍欧美精品| 野花国产精品入口| 欧美日韩国产免费观看| 五月天久久久| 亚洲中字黄色| 一区二区三区国产在线| 免费日韩av片| 在线国产精品一区| 亚洲精品一级二级三级| 亚洲人成亚洲精品| 日本v片在线高清不卡在线观看| 亚洲色图网站| 亚洲字幕久久| 亚洲+小说+欧美+激情+另类| 亚洲18在线| 欧美精品国产| 麻豆一区在线| 中文在线免费视频| 日韩在线短视频| 国产真实久久| 自拍日韩欧美| 中文字幕日韩亚洲| 久久精品999| 麻豆精品在线播放| 色综合五月天| 丝袜诱惑一区二区| 亚洲欧美伊人| 亚洲精品高潮| 日韩国产欧美三级| 国产精品久久乐| 91日韩欧美| 亚洲女同一区| 日韩有吗在线观看| 久久97久久97精品免视看秋霞| a国产在线视频| 久久久久久久久丰满| 亚洲免费中文| 国产日韩高清一区二区三区在线 | 伊人久久高清| 黄色在线一区| 日韩午夜视频在线| 麻豆一区二区99久久久久| 亚洲天堂资源| 亚洲综合电影一区二区三区| 中文字幕亚洲精品乱码| 国产精品地址| www成人在线视频| 亚洲资源网站| 国产成人精品三级高清久久91| 久久久成人网| 婷婷精品在线| 国产精品99一区二区三| 亚洲精华国产欧美| 国产日韩视频在线| 私拍精品福利视频在线一区| 99在线精品免费视频九九视| 欧美日本不卡| 亚洲精品福利| 樱桃视频成人在线观看| 丝瓜av网站精品一区二区| 国产三级一区| 精品在线99| 国产精品一区二区免费福利视频 | 日韩国产欧美一区二区| 蘑菇福利视频一区播放| 久久国产三级| 欧美日韩激情在线一区二区三区| 日本午夜精品| 久久青草久久| 欧美日韩a区| 婷婷亚洲综合| 麻豆久久久久久| 日韩精品一二三四| 国产欧美一区二区三区精品酒店| 在线精品视频一区| 日韩欧美视频专区| 欧美午夜三级| 尤物网精品视频| 精品国产精品国产偷麻豆| 蜜臀久久99精品久久久画质超高清| 国产极品嫩模在线观看91精品| 亚洲女同中文字幕| 久草精品视频| 亚洲精品福利| 国内精品福利| 日韩不卡一区| 国产欧美精品| 中文字幕av亚洲精品一部二部 |