鍍金池/ 問答/HTML/ js對象取值

js對象取值

圖片描述

如圖
這個數(shù)組里面的對象 有可能有多個相同的text 字段 怎么選擇 最靠前的一個 對象的text 或者 隨機(jī)選擇一個其中相同的某一個也行

只給其中一個加上 s:true 跟 pp:pp

回答
編輯回答
遲月

更新

我理解錯題意了,我以為你是要對所有重復(fù)出現(xiàn)的字符都做 第一次出現(xiàn)的元素添加屬性

如果是要給定字符并找出的話,@joy鈺 的答案就可以了。

原答案

// 將數(shù)組映射成鍵值對,{'字符': 出現(xiàn)次數(shù)}
let map = wordsArr.reduce((map, word) => [map[word.text] = (map[word.text] || 0) + 1, map], {})
Object.keys(map).forEach(key => {
    // 根據(jù)當(dāng)前鍵找到第一次出現(xiàn)的位置
    let index = wordsArr.findIndex(word => word.text === key);
    // 隨機(jī)的話,就 filter 出所有 text 為 key 的元素,然后取個隨機(jī)數(shù)去取對應(yīng)位置即可。
    // 為該位置上的元素添加屬性
    wordsArr[index]['s'] = 'true';
    wordsArr[index]['pp'] = 'pp'
})
2017年11月21日 06:10
編輯回答
魚梓

Array.prototype.getByValue = function(val) {

    for(var i=0; i<this.length; i++) {
        if(this[i].text == val) {
            //push
        }
    }
};
2017年9月6日 17:33
編輯回答
拮據(jù)

先把相同 text 的過濾出來就行了

const getSameTextArr = text => wordsArr.filter(v => v.text===text)
const getRandomNumber = num => Math.floor(Math.random()*num)
let sameTextArr = getSameTextArr('氣')
let randomNumber = getRandomNumber(sameTextArr.length)
//  最靠前的一個: sameTextArr[0].id
//  隨機(jī)選擇一個: sameTextArr[randomNumber].id

再去wordsArr找到相應(yīng) id 去修改.

2017年9月30日 02:18