价值验证

4

数据:

var dataArr = [
    {id: 123, str:"Alexey Ayzin", bg:"#FFFFFF"},
    {id: 234, str:"Mira Mdivani"},
    {id: 345, str:"Maria Iliakova"},
    {id: 456, str:"Dennis Ayzin"}
];

如您所见,bg:"FFFFFF"存在于其中一个子集中,但不存在于其他子集中。我该如何更改:

for (var i = 0; i < datalength; i++) {
    if(dataArr[i].bg === "undefined"){
        data[i].bg = stringToColour(dataArr[i].str);
    }
}

它会检查每个子集是否存在BG,如果不存在则用一个填充。 JSFiddle


1
去除引号:dataArr[i].bg === undefined - Tushar
3个回答

2
如果物品有背景,则不需要执行任何操作,否则请设置新的背景。
var dataArr = [
    {id: 123, str:"Alexey Ayzin", bg:"#FFFFFF"},
    {id: 234, str:"Mira Mdivani"},
    {id: 345, str:"Maria Iliakova"},
    {id: 456, str:"Dennis Ayzin"}
];
dataArr.forEach(function (item){
    item.bg = item.bg || '#FFFFFF';
});

function assignColor(arr, prop, color){
    arr.forEach(function (item){
        item[prop]= item[prop] || color;
    });
}

// usage
assignColor(dataArr, 'bg', '#FFFFFF'); // <== or any other color

// UPDATE
//----------------------------

// get first value of color from array and assign to other
var item = dataArr.find(function(item){ // this will find first item which has defined color
    return !!item.bg;
});
assignColor(dataArr, 'bg', item.bg);

事实上,它可以是任何东西,不仅仅是 FFFFF。我能使用正则表达式吗? - Alexey Ayzin
你的意思是,我猜想你想要赋值不同于#FFFFFF的值? - Medet Tleukabiluly
是的。这将是相当随机的数据,只保证有字符串和ID。颜色可能存在,也可能不存在,并且可以是任何颜色。@medettleukabiluly - Alexey Ayzin
实际上,我不仅想分配不同的颜色,而且我想在数据中找到任何颜色。 - Alexey Ayzin
让我们在聊天中继续这个讨论。链接:http://chat.stackoverflow.com/rooms/112702/discussion-between-alexey-ayzin-and-medet-tleukabiluly。 - Alexey Ayzin

1
如果您有有效的假值,可以使用 in 运算符。
if (!('bg' in dataArr[i])) {
    // set dataArr[i].bg
}

0
我最终做的是以下内容:
for(var elem in payload.data){
    var isPresent = 0;
    for(var key in payload.data[elem]){
        if(key == "bG"){
            //change boolean if bG is present
            isPresent = 1;
        }
    }
    if(!isPresent){
        bGHex = stringToColour(payload.data[elem].str);
        payload.data[elem].bG = bGHex
    }

然后是我的其余代码。这特别有效,尤其是在深入挖掘其逻辑后。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接