如图
这个数组里面的对象 有可能有多个相同的text 字段 怎么选择 最靠前的一个 对象的text 或者 随机选择一个其中相同的某一个也行
只给其中一个加上 s:true 跟 pp:pp
如图
这个数组里面的对象 有可能有多个相同的text 字段 怎么选择 最靠前的一个 对象的text 或者 随机选择一个其中相同的某一个也行
只给其中一个加上 s:true 跟 pp:pp
我理解错题意了,我以为你是要对所有重复出现的字符都做 第一次出现的元素添加属性。
如果是要给定字符并找出的话,@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'
})
Array.prototype.getByValue = function(val) {
for(var i=0; i<this.length; i++) {
if(this[i].text == val) {
//push
}
}
};
10 回答11.2k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
先把相同 text 的过滤出来就行了
再去
wordsArr
找到相应 id 去修改.