如何从每一行计算值?

时间:2019-05-21 20:21:31

标签: javascript

我试图找到一种方法来读取每一行(如下所述),并在'='之后加上值。

NumberOfCores=4
NumberOfLogicalProcessors=4

NumberOfCores=4
NumberOfLogicalProcessors=4

NumberOfCores=4
NumberOfLogicalProcessors=4

我在寻找什么? 脚本应该能够读取包含“ NumberOfLogicalProcessors”的每一行,并给出加法数字的数字输出(在这种情况下为“ 12”)。

我到目前为止编写的代码:

var lines= abovelines.split('\n');
for(var i = 0;i <lines.length;i++){
    console.log(lines[i]);
}

5 个答案:

答案 0 :(得分:0)

您已经找到了如何通过换行符分割来获取每一行的方法。现在,您要做的就是用=符号将每一行分开。像这样:

var lines= abovelines.split('\n');
var sum = 0;
for(var i = 0;i < lines.length; i++){
    var lineSplit = lines[i].split("=");
    if (lineSplit[0] === 'NumberOfLogicalProcessors') {
       sum += (+lineSplit[1]);
    }
}
console.log('Total NumberOfLogicalProcessors ' + sum);

此语句+lineSplit[1]正在将字符串数字转换为数字数据类型。

答案 1 :(得分:0)

这是一个工作示例:

const txt = `NumberOfCores=4
NumberOfLogicalProcessors=4

NumberOfCores=4
NumberOfLogicalProcessors=4

NumberOfCores=4
NumberOfLogicalProcessors=4`;

const lines = txt.replace(/(^[ \t]*\n)/gm, "").split('\n');

const result = {};

for(const line of lines) {
  const [text, value] = line.split("=")
  result[text] = (result[text] || 0) + parseInt(value)
}

console.log('All key values: ', result)

console.log('Number of Cores: ', result['NumberOfCores'])

console.log('Number of Procesors: ', result['NumberOfLogicalProcessors'])

这里拥有所有键值,并且如果需要,您可以按键访问特定的键值,如下所示:

result['NumberOfLogicalProcessors']

result['NumberOfCores']

答案 2 :(得分:0)

var NumberOfLogicalProcessors = 0;
for (var i = 0; i < lines.length; i++)
{
   var newArray = lines[i].split('=');
   if (newArray.length > 1 && newArray[0] == 'NumberOfLogicalProcessors')
   {
      NumberOfLogicalProcessors = NumberOfLogicalProcessors + parseInt(newArray[1]);
   }
}
console.log(NumberOfLogicalProcessors);

答案 3 :(得分:0)

正则表达式似乎适合您的用例。

let input = `NumberOfCores=4
NumberOfLogicalProcessors=4

NumberOfCores=4
NumberOfLogicalProcessors=4

NumberOfCores=4
NumberOfLogicalProcessors=4`;

let sums = input
    .match(/\w+=\d+/g)
    .map(a => a.match(/(?<key>\w+)=(?<value>\d+)/).groups)
    .reduce((sums, {key, value}) => {
      sums[key] = (sums[key] || 0) + parseInt(value);
      return sums;
    }, {});

console.log(sums);
console.log(sums.NumberOfLogicalProcessors);

答案 4 :(得分:0)

使用正则表达式似乎是个好习惯,(语法值得商)):

const string = `NumberOfCores=4
NumberOfLogicalProcessors=4
NumberOfCores=4
NumberOfLogicalProcessors=4
NumberOfCores=4
NumberOfLogicalProcessors=4`;

const regEx = /(?:NumberOfLogicalProcessors)\s?=+\s?([0-9])/g

let result = 0;

for ( const match of string.match( regEx ) ) {
  result += Number( regEx.exec( match )[ 1 ] );
  regEx.lastIndex = 0; // reset index for next iteration
}

console.log( result );