繁体   English   中英

计算数组的每个对象中的值

[英]count values in each object of array

对不起,我刚刚改变了这个问题:我想知道我的数组中有多少次“orange”这个词。 在本例中,“橙色”> 4 次。

MyArray = [{
    fruit1: "Orange is blabla",
    fruit2: "Apple blabla",
    fruit3: "blabla Banana",
    color1: "ORANGE"
}, {
    fruit4: "blabla Orange",
    fruit5: "Apple",
    fruit6: "Banana",
    color2: "orange blabla"
}];

var newArr = MyArray.filter(function (item) {
    return _.values(item.xxx === "orange";
});

您可以通过以下方式进行

 let MyArray = [{fruit1:"Orange", fruit2:"Apple", fruit3:"Banana", color1:"ORANGE"},{fruit4:"Orange", fruit5:"Apple", fruit6:"Banana", color2:"orange"}]; let result = MyArray.reduce((a, b) => { for(let key of Object.keys(b)){ let re = /orange/gi; if(b[key].match(re) != null){ a++; } } return a; }, 0); console.log(result);

 MyArray = [{ fruit1: "Orange is blabla", fruit2: "Apple blabla", fruit3: "blabla Banana", color1: "ORANGE" }, { fruit4: "blabla Orange", fruit5: "Apple", fruit6: "Banana", color2: "orange blabla" }]; var totalOrange = 0; MyArray.map(function(item) { for (var key in item) { if (item[key].toLowerCase().indexOf('orange') >= 0) { totalOrange++; } } }); console.log(totalOrange);

你可以这样做: -

const count =  MyArray.reduce((count,item)=>{
     Object.keys(item).forEach((val)=>{
       if(item[val].toLowerCase().indexOf('orange') != -1){
         count++;
       }
     })
     return count
    },0)

使用 ES6,您可以使用扩展语法...Object.values来做到这一点。

 var MyArray = [{ fruit1: "Orange is blabla", fruit2: "Apple blabla", fruit3: "blabla Banana", color1: "ORANGE" }, { fruit4: "blabla Orange", fruit5: "Apple", fruit6: "Banana", color2: "orange blabla" }] var count = [].concat(...MyArray.map(Object.values)) .filter(e => e.toLowerCase().includes('orange')) .length; console.log(count)

我想这样的事情可能会奏效。 您可以在一个大循环中完成它以使其稍微快一点,但这种形式更易读恕我直言。

const amountOfOranges = MyArray
    // transform each object into an array of its values
    .map( Object.values )
    // remove all values not named 'orange'
    .map( ary => ary.filter( value => value === 'orange' ) )
    // replace all arrays by their length
    .map( ary => ary.length )
    // sum the results
    .reduce( ( x, y ) => x + y, 0 );
var MyArray = [{fruit1:"Orange", fruit2:"Apple", fruit3:"Banana", color1:"ORANGE"},{fruit4:"Orange", fruit5:"Apple", fruit6:"Banana", color2:"orange"}];

var count = 0;
MyArray.map(function(item,index){
    Object.keys(item).map(function(key){
        if(item[key].toLowerCase().indexOf('orange') >= 0){
            count++;
        }
    });
});
console.log(count);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM