如图这个数组里面的对象 有可能有多个相同的text 字段 怎么选择 最靠前的一个 对象的text 或者 随机选择一个其中相同的某一个也行只给其中一个加上 s:true 跟 pp:pp
3 回答
温温酱
TA贡献1752条经验 获得超4个赞
更新
我理解错题意了,我以为你是要对所有重复出现的字符都做 第一次出现的元素添加属性。
如果是要给定字符并找出的话,@joy钰 的答案就可以了。
原答案
// 将数组映射成键值对,{'字符': 出现次数}
let map = wordsArr.reduce((map, word) => [map[word.text] = (map[word.text] || 0) + 1, map], {})
Object.keys(map).forEach(key => {
// 根据当前键找到第一次出现的位置
let index = wordsArr.findIndex(word => word.text === key);
// 随机的话,就 filter 出所有 text 为 key 的元素,然后取个随机数去取对应位置即可。
// 为该位置上的元素添加属性
wordsArr[index]['s'] = 'true';
wordsArr[index]['pp'] = 'pp'
})
慕容708150
TA贡献1831条经验 获得超4个赞
Array.prototype.getByValue = function(val) {
for(var i=0; i<this.length; i++) {
if(this[i].text == val) {
//push
}
}
};
添加回答
举报
0/150
提交
取消