根据字符串索引获取元素

时间:2020-07-22 20:18:27

标签: javascript jquery

所以我有这个字符串:

...
11007,"test,Biovegan,"50g",4005394284292,7.42,da
11008,"test4",Biovegan,"55g",40042,8.42,da
...

它代表某些产品的数据,第一个元素是代码,第二个是名称,第三个是供应商,第四个是重量,第五个是条形码,第六个是价格,第七个是一个随机布尔值。

我想使用javascript字符串函数获取价格,但是我可以找到合适的方法。

我想知道我有条形码,所以想得到价格,所以如果我要条形码的价格:4005394284292,它将返回7.42,如果我提供条形码:40042,它将返回返回8.42

4 个答案:

答案 0 :(得分:1)

  var bodyArray = bodyHTML.split(',')

  var codIndex = bodyArray.indexOf(barcode)

  var price = bodyArray[codIndex + 1]

答案 1 :(得分:1)

我能想到的最整洁的解决方案是创建具有以下格式的对象:

{
   "4005394284292": "7.42",
   "40042": "8.42"
   ....
}

因此您只能使用dbMap [barcode]

来获取价格

const data = `11007,"test,Biovegan,"50g",4005394284292,7.42,da
11008,"test4",Biovegan,"55g",40042,8.42,da`

let lines = data.split('\n')
let arr = lines.map(line => line.split(','))
let dbMap = arr.reduce((db, e) => {
  db[e[4]] = e[5];
  return db;
}, {})

console.log(dbMap)

答案 2 :(得分:0)

您可以使用JavaScript中的split()函数使用逗号作为分隔符来分隔字符串。下面的功能getProductPrice()可以按照您的要求进行操作,您只需传递您想要价格的产品的条形码,然后它将返回结果。 products数组包含所有产品的列表。

let products = [
        '11007,"test,Biovegan,"50g",4005394284292,7.42,da',
        '11008,"test4",Biovegan,"55g",40042,8.42,da',
    ];

    let barcodeToFind = '4005394284292';

    function getProductPrice(barcode) {
        let foundProduct = false;
        for (var i = 0; i < products.length; i++) {
            let productData = products[i].split(","); // Split the data by the comma as a delimiter.

            if(productData[4] === barcode) {
                foundProduct = productData[5];
            }
        }

        return foundProduct;
    }

    console.log(getProductPrice(barcodeToFind));
<script src="https://code.jquery.com/jquery-1.11.1.min.js"></script> <!-- JQuery -->

答案 3 :(得分:0)


const str = "11007,test,Biovegan,50g,4005394284292,7.42,da".split(",").splice(4, 2);
const str2 = "11008,test4,Biovegan,55g,40042,8.42,da".split(",").splice(4, 2);

const codes = [
    str, 
    str2    
]

function getPrice(barcode) {
    for(let i = 0; i < codes.length; ++i) {
        if(codes[i][0] == barcode) {
            return codes[i][1];
        }
    }
    return false;
}

getPrice(40042);