gpt4 book ai didi

javascript - 如何在React.js中替换数组值?

转载 作者:行者123 更新时间:2023-12-02 23:01:52 24 4
gpt4 key购买 nike

这是我在 React.js 中的示例代码。我想使用数组 distances来自Constants.jsMain.js 。特别是 APT 列在sampleData应替换为适当的 value来自数组 distances取自Constants.js .

因此,单击按钮 Load data 后,对象csvData最终应如下所示:

NUM,APT,COST
1,483,20
2,5777,25
3,5777,15

Constants.js

export const distances = [
{label:"KJFK",value:5777},
{label:"ERTE",value:483}
]

Main.js

import React, { Component } from 'react';
import { CsvToHtmlTable } from 'react-csv-to-table';
import ReactFileReader from 'react-file-reader';
import Button from '@material-ui/core/Button';
import {distances} from './Constants';

const sampleData = `
NUM,APT,COST
1,ERTE,20
2,KJFK,25
3,KJFK,15
`;

class CSVDataTable extends Component {

state={
csvData: sampleData
};

handleFiles = files => {
var reader = new FileReader();
reader.onload = (e) => {
// Use reader.result
this.setState({
csvData: reader.result
})
this.props.setCsvData(reader.result)
}
reader.readAsText(files[0]);
}

render() {
return <div>
<ReactFileReader
multipleFiles={false}
fileTypes={[".csv"]}
handleFiles={this.handleFiles}>
<Button
variant="contained"
color="primary"
>
Load data
</Button>

</ReactFileReader>
<CsvToHtmlTable
data={this.state.csvData || sampleData}
csvDelimiter=","
tableClassName="table table-striped table-hover"
/>
</div>
}
}

export default CSVDataTable;

我尝试了以下方法:

function myFunc(item, index) {
if (item["APT"]=="ERTE") {
return 483
}
else {
return 5777
}
}

this.setState({
csvData: reader.result.forEach(myFunc)
})

但是此更新后代码无法编译。

最佳答案

您可能可以使用以下内容:

const replacedValues = distances.reduce((acc, d) => {
const regex = new RegExp(`${d.label}`, 'g')
return acc.replace(regex, d.value)
}, sampleData)

这将迭代所有可能的“距离”,用 distance.value 替换任何等于 distance.label 的值,并返回应用了所有更改的最终字符串.

根据你的情况,你可以这样做

this.setState({
csvData: replacedValues
})
<小时/>

除了这个答案之外,您还可以创建一个函数,动态地将给定字符串中匹配的所有值替换为距离常量中的值。

const replaceDistances = data =>
distances.reduce(
(acc, d) => acc.replace(new RegExp(`,${d.label},`, "g"), `,${d.value},`),
data
);

// And whenever you load values

this.setState({
csvData: replaceDistances(reader.result) // or sampleData
})

关于javascript - 如何在React.js中替换数组值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57748318/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com